我正在尝试使用tyrus项目创建一个websocket。我收到以下错误消息:
java.lang.RuntimeException: javax.websocket.DeploymentException: org.glassfish.tyrus.container.grizzly.client.GrizzlyClientContainer
at org.glassfish.tyrus.client.ClientManager.<init>(ClientManager.java:272) ~[bundlefile:na]
at org.glassfish.tyrus.client.ClientManager.createClient(ClientManager.java:240) ~[bundlefile:na]
at org.glassfish.tyrus.client.ClientManager.createClient(ClientManager.java:219) ~[bundlefile:na]
我的pom依赖关系如下所示:
<dependency>
<groupId>org.glassfish.tyrus</groupId>
<artifactId>tyrus-client</artifactId>
<version>1.12</version>
</dependency>
<dependency>
<groupId>org.glassfish.tyrus</groupId>
<artifactId>tyrus-core</artifactId>
<version>1.12</version>
</dependency>
<dependency>
<groupId>org.glassfish.tyrus</groupId>
<artifactId>tyrus-spi</artifactId>
<version>1.12</version>
</dependency>
<dependency>
<groupId>javax.websocket</groupId>
<artifactId>javax.websocket-api</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>javax.websocket</groupId>
<artifactId>javax.websocket-client-api</artifactId>
<version>1.1</version>
</dependency>
很简单的Java代码:
logger.info("Creating web socket for url {}", getWebSocketUrl(currentApic.IPAddress, port));
echoUri = new URI(getWebSocketUrl(currentApic.IPAddress, port));
client = ClientManager.createClient();
client.connectToServer(APICWebClient.class, echoUri);
如果我尝试添加容器依赖项
<dependency>
<groupId>org.glassfish.tyrus</groupId>
<artifactId>tyrus-container-grizzly-server</artifactId>
<version>1.12</version>
</dependency>
我的mvn全新安装失败说:
Failed to read artifact descriptor for org.glassfish.tyrus:tyrus-container-grizzly-server:jar:1.4: Could not transfer artifact org.glassfish.tyrus:tyrus-container-grizzly-server:pom:1.4 from/to central (http://repo1.maven.org/maven2): repo1.maven.org: unknown error: Unknown host repo1.maven.org: unknown error -> [Help 1]
编辑:mvn清理后,上述问题已解决。服务器容器和客户端容器软件包已添加。但是我仍然遇到相同的运行时错误
java.lang.RuntimeException:javax.websocket.DeploymentException:org.glassfish.tyrus.container.grizzly.client.GrizzlyClientContainer
我在OSGi环境中使用。我该如何解决。需要一些帮助。
最佳答案
类路径上缺少容器org.glassfish.tyrus.container.grizzly.client.GrizzlyClientContainer
。
添加Maven模块tyrus-container-grizzly-client
。
是的,tyrus抛出的异常可能更准确。