Websocket 客户端找不到实现 class

Websocket Client Could not find an implementation class

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

我认为您遇到的 RuntimeException 幸好不是由您自己的任何直接编码错误引起的。

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

The method looks for the ContainerProvider implementation class in the order listed in the META-INF/services/javax.websocket.ContainerProvider file, returning the WebSocketContainer implementation from the ContainerProvider implementation that is not null.

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

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

希望对您有所帮助!

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

希望对您有所帮助。

正在添加

// https://mvnrepository.com/artifact/org.glassfish.tyrus.bundles/tyrus-standalone-client

compile group: 'org.glassfish.tyrus.bundles', name: 'tyrus-standalone-client', version: '1.9'

我的 build.gradle 文件对我有用。