【问题标题】:Websocket Client Could not find an implementation classWebsocket客户端找不到实现类
【发布时间】:2015-03-01 08:15:21
【问题描述】:

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

【问题讨论】:

  • 代码抛出了什么异常?您缺少依赖项的事实可能仍然是一个问题。
  • 抱歉,我已经更新了我的问题以包含更多信息以及抛出的异常!

标签: java websocket tomcat7


【解决方案1】:

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

希望这会对你有所帮助。

【讨论】:

  • 不幸的是,你是对的,我最终做的是制作一个使用 javascript 作为客户端的网页。我还有一个使用 Autobahn websockets api 的电话应用程序,它可以用作客户端。
【解决方案2】:

我认为您遇到的RuntimeException 幸运地不是由您自己的任何直接编码错误产生的。

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

该方法按照META-INF/services/javax.websocket.ContainerProvider文件中列出的顺序查找ContainerProvider实现类,从不是ContainerProvider的实现中返回WebSocketContainer实现而不是null

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

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

希望这有帮助!

【讨论】:

  • 在构建路径中我有 javax.websocket-api-1.1.jar 我还必须把它放在 lib 文件夹中吗?据我所知,这个 jar 包含 ContainerProvider
  • 我不认为lib文件夹是什么标准,但试试看它是否有效。
  • 我又设置了几个项目,但总是遇到同样的异常
  • 我还有一个小问题要问你,你认为设置不当的项目是服务器还是客户端?
  • 我的猜测是 ContainerProvider 将参与客户端实现,因为有一个 specific server side implementation 扩展了它。
【解决方案3】:

添加

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

编译组:'org.glassfish.tyrus.bundles',名称:'tyrus-standalone-client',版本:'1.9'

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

【讨论】:

    猜你喜欢
    • 2014-09-30
    • 1970-01-01
    • 1970-01-01
    • 2018-07-20
    • 1970-01-01
    • 2015-06-18
    • 2020-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多