java WebSocket客户端找不到实现类

ctrmrzij  于 2023-03-21  发布在  Java
关注(0)|答案(4)|浏览(451)

我将以我没有使用任何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)
xdnvmnnf

xdnvmnnf1#

javax.WebSocket API只是规范,没有完整的实现,你可能需要采取jar文件tyrus-standalone-client-1.9.jar,并尝试相同的例子,应该可以解决你的问题。
希望这对你有帮助。

w80xi6nr

w80xi6nr2#

我认为您正在经历的RuntimeException幸运的是不是由您自己的任何直接编码错误产生的。
这里描述的方法getWebSocketContainer()只是尝试加载其他类并获取服务器中ContainerProvider的静态示例。
该方法按照META-INF/services/javax.websocket.ContainerProvider文件中列出的顺序查找ContainerProvider实现类,从不是nullContainerProvider实现返回WebSocketContainer实现。
不幸的是,这意味着您的项目配置不正确。请仔细检查以确保此文件包含在项目的生成路径中。
如果您正在查看的其他项目正在使用您所描述的Maven依赖项,我会尝试设置您的项目来做同样的事情。
希望这有帮助!

zysjyyx4

zysjyyx43#

添加
// https://mvnrepository.com/artifact/org.glassfish.tyrus.bundles/tyrus-standalone-client
编译组:'org.glassfish.tyrus. bundles',名称:'tyrus-standalone-client',版本:'1.9'
我的 build.gradle 文件为我工作。

ahy6op9u

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 EEjakarta.websocket。因此,如果您使用的Tyrus版本与您正在使用的websocket API不兼容,则也会出现错误。

相关问题