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 文件对我有用。
我将以我没有使用任何 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 theMETA-INF/services/javax.websocket.ContainerProvider
file, returning theWebSocketContainer
implementation from theContainerProvider
implementation that is notnull
.
不幸的是,这意味着您的项目配置不正确。仔细检查以确保此文件包含在项目的构建路径中。
如果您正在查看的其他项目正在使用您描述的 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 文件对我有用。