Websocket客户端找不到实现类

问题描述:

我将在此前面介绍一下,我没有使用任何Maven依赖关系,但我知道我缺少一个jar文件wls-api.jar(至少这是我读过的)。Websocket客户端找不到实现类

要解决这个问题,我下载了oracle-weblogic-7.9.jar,但问题依然存在。

唯一的例外是在这条线抛出

WebSocketContainer container = ContainerProvider.getWebSocketContainer(); 

谁能告诉我,为什么这条线连续失败?

UPDATE:在进一步阅读的例子,我看到用这种依赖性

<dependency> 
<groupId>javax.websocket</groupId> 
<artifactId>javax.websocket-api</artifactId> 
<version>1.0</version> 

javax.websocket-api.jar在服务器和客户端的构建路径,因为它是必需的。我在这里错过了什么?

其他更新:我忘了包括抛出的错误!

Exception in thread "main" java.lang.RuntimeException: Could not find an implementation class. 
at javax.websocket.ContainerProvider.getWebSocketContainer(ContainerProvider.java:73) 
at connect.<init>(connect.java:21) 
at test.main(test.java:11) 
+0

代码抛出什么异常?您错过依赖关系的事实可能仍然是一个问题。 –

+0

对不起,我已更新我的问题,以包括一些更多的信息以及抛出的异常! –

javax.websocket api只是规范没有完整的实现你可能需要把jar文件tyrus-standalone-client-1.9.jar并尝试应该解决你的问题的同一个例子。我测试了我的例子,它工作正常。

希望这会帮助你。

+0

不幸的是,你是对的,我最终做的是做一个使用JavaScript作为客户端的网页。我也有一个使用Autobahn websockets API的手机应用程序,可以用作客户端。 –

我认为RuntimeException你遇到的是幸好不是由你自己的任何直接编码错误产生。

方法getWebSocketContainer(),如here所述,只是试图加载其他类并获取服务器中的ContainerProvider的静态实例。

的方法查找在META-INF/services/javax.websocket.ContainerProvider文件中列出的顺序ContainerProvider实现类,返回从ContainerProvider实现,是不是nullWebSocketContainer实施。

不幸的是,这意味着您的项目配置不正确。仔细检查以确保该文件包含在项目的构建路径中。

如果您正在查看的其他项目正在使用您描述的Maven依赖关系,我会尝试设置您的项目执行相同的操作。

希望这有助于!

+0

在构建路径我有javax.websocket-api-1.1.jar我也必须把它放在lib文件夹中吗?从我可以告诉这个jar包含ContainerProvider –

+0

我不认为lib文件夹是标准的,但尝试它,看看它是否工作。 –

+0

我已经设置了几个项目,总是得到相同的异常 –