我将在前面加上我没有使用任何maven依赖项,但我知道我缺少一个jar文件wls-api.jar
(至少这是我读过的)。
为了解决这个问题,我下载了oracle-weblogic-7.9.jar
,但问题仍然存在。
此行抛出异常
WebSocketContainer container = ContainerProvider.getWebSocketContainer();
谁能告诉我为什么这条线连续失败?
更新:在进一步阅读示例后,我看到使用此依赖
<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 :(得分:22)
javax.websocket api只是规范没有完全实现你可能需要把jar文件tyrus-standalone-client-1.9.jar并尝试相同的例子来解决你的问题。我用我的例子测试过,它工作正常。
希望这会对你有所帮助。
答案 1 :(得分:3)
添加
// https://mvnrepository.com/artifact/org.glassfish.tyrus.bundles/tyrus-standalone-client
编译组:“ org.glassfish.tyrus.bundles”,名称:“ tyrus-standalone-client”,版本:“ 1.9”
对我的 build.gradle 文件有用。
答案 2 :(得分:2)
我认为您遇到的RuntimeException
幸运的是,并非由您自己的任何直接编码错误产生。
方法getWebSocketContainer()
,如here所述,只是尝试加载其他类并获取服务器中ContainerProvider
的静态实例。
该方法按照
ContainerProvider
文件中列出的顺序查找META-INF/services/javax.websocket.ContainerProvider
实现类,返回WebSocketContainer
实现中ContainerProvider
实现的null
实现}}
遗憾的是,这意味着您的项目配置不正确。仔细检查以确保此文件包含在项目的构建路径中。
如果您正在查看的其他项目正在使用您所描述的Maven依赖项,我会尝试设置您的项目以执行相同操作。
希望这有帮助!