我将以我没有使用任何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)
4条答案
按热度按时间xdnvmnnf1#
javax.WebSocket API只是规范,没有完整的实现,你可能需要采取jar文件tyrus-standalone-client-1.9.jar,并尝试相同的例子,应该可以解决你的问题。
希望这对你有帮助。
w80xi6nr2#
我认为您正在经历的
RuntimeException
幸运的是不是由您自己的任何直接编码错误产生的。这里描述的方法
getWebSocketContainer()
只是尝试加载其他类并获取服务器中ContainerProvider
的静态示例。该方法按照
META-INF/services/javax.websocket.ContainerProvider
文件中列出的顺序查找ContainerProvider
实现类,从不是null
的ContainerProvider
实现返回WebSocketContainer
实现。不幸的是,这意味着您的项目配置不正确。请仔细检查以确保此文件包含在项目的生成路径中。
如果您正在查看的其他项目正在使用您所描述的Maven依赖项,我会尝试设置您的项目来做同样的事情。
希望这有帮助!
zysjyyx43#
添加
// https://mvnrepository.com/artifact/org.glassfish.tyrus.bundles/tyrus-standalone-client
编译组:'org.glassfish.tyrus. bundles',名称:'tyrus-standalone-client',版本:'1.9'
我的 build.gradle 文件为我工作。
ahy6op9u4#
错误“Couldn 't find an implementation class”表示您的类路径上没有通过
META-INF/services/javax.websocket.ContainerProvider
文件发布ContainerProvider
实现的JAR。一个可能的不绑定到特定容器的客户端实现是tyrus-container-jdk-client包,也可以在依赖项和websocket-api的捆绑包中作为tyrus-standalone-client-jdk包使用。
请注意,Tyrus的1.x版本使用Java EE的
javax.websocket
API,而2.x版本使用其后继Jakarta EE的jakarta.websocket
。因此,如果您使用的Tyrus版本与您正在使用的websocket
API不兼容,则也会出现错误。