Websocket 客户端 找不到实现类

2022-09-02 08:57:06

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

答案 1

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

希望这会帮助你。


答案 2

我认为你正在经历的幸运不是由你自己的任何直接编码错误产生的。RuntimeException

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

该方法按文件中列出的顺序查找实现类,并从不是 的实现返回实现。ContainerProviderMETA-INF/services/javax.websocket.ContainerProviderWebSocketContainerContainerProvidernull

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

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

希望这有帮助!


推荐