【问题标题】:java.lang.NoClassDefFoundError: javax/websocket/ClientEndpointConfig$Configurator from StandardWebsocketClientjava.lang.NoClassDefFoundError:来自 StandardWebsocketClient 的 javax/websocket/ClientEndpointConfig$Configurator
【发布时间】:2018-06-26 19:42:09
【问题描述】:

我需要编写 websocket 客户端。 我开始学习本教程:https://github.com/eugenp/tutorials/blob/master/spring-boot/src/main/java/org/baeldung/websocket

运行 StomClient 后我收到:

    java.lang.NoClassDefFoundError: javax/websocket/ClientEndpointConfig$Configurator

在 WebSocketTester.testConnection(WebSocketTester.java:16)

引起:java.lang.ClassNotFoundException: javax.websocket.ClientEndpointConfig$Configurator 在 java.net.URLClassLoader.findClass(URLClassLoader.java:381) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:424) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 23 更多

我的 pom 只有这个依赖:

    <dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-websocket</artifactId>
        <version>5.0.2.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-messaging</artifactId>
        <version>5.0.2.RELEASE</version>
    </dependency>

客户端和会话处理程序是从附加链接下的 github 复制的。 客户端类中的这一行WebSocketClient client = new StandardWebSocketClient(); 抛出异常

【问题讨论】:

  • 在您运行应用程序时,您是否依赖于类路径?

标签: java spring websocket


【解决方案1】:

尝试添加以下依赖项。它对我有用。

<dependency>
     <groupId>org.glassfish.tyrus.bundles</groupId>
     <artifactId>tyrus-standalone-client</artifactId>
     <version>1.9</version>
</dependency>

【讨论】:

  • project tyrus 是 JSR 356: Java API for WebSocket - 参考实现。 tyrus-project.github.io(当前版本 1.17)
【解决方案2】:

WebSockets 的 Spring Boot Starter 具有您需要的依赖项:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-websocket</artifactId>
</dependency>

【讨论】:

    【解决方案3】:

    遇到同样的错误。通过添加以下依赖项解决了它。

        <dependency>
            <groupId>javax.websocket</groupId>
            <artifactId>javax.websocket-api</artifactId>
            <version>1.1</version>
        </dependency>
    

    【讨论】:

    • javax.websocket api 只是规范没有完整实现你可能需要拿jar文件tyrus-standalone-client-1.9.jar
    猜你喜欢
    • 2019-06-17
    • 2014-08-30
    • 2012-02-09
    • 2014-04-23
    • 2017-04-02
    • 2016-02-09
    • 2020-05-28
    • 2011-02-20
    • 1970-01-01
    相关资源
    最近更新 更多