首页 > 解决方案 > javax.websocket 依赖使用

问题描述

大家好,我正在使用 Web Sockets,我必须导入javax.websocket依赖项。我已经从 https://jar-download.com/artifacts/javax.websocket下载 并将 jar 添加到我的项目中,代码是干净且没有错误的。这是我的代码

服务器代码:

import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.websocket.ClientEndpoint;
import javax.websocket.OnError;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;

public class Server {
@OnOpen
public void onOpen(Session session) {
    System.out.println("Connected to endpoint: " + session.getBasicRemote());
    try {
        String name = "Duke";
        System.out.println("Sending message to endpoint: " + name);
        session.getBasicRemote().sendText(name);
    } catch (IOException ex) {
        Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
    }
}

@OnMessage
public void processMessage(String message) {
    System.out.println("Received message in client: " + message);
    Client.messageLatch.countDown();
}

@OnError
public void processError(Throwable t) {
    t.printStackTrace();
  }
}

客户端代码:

import java.io.IOException;
import java.net.URI;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.websocket.ContainerProvider;
import javax.websocket.DeploymentException;
import javax.websocket.WebSocketContainer;


public class Client {

final static CountDownLatch messageLatch = new CountDownLatch(1);

public static void main(String[] args) {
    try {
        WebSocketContainer container = ContainerProvider.getWebSocketContainer();
        String uri = "ws://echo.websocket.org:80/";
        System.out.println("Connecting to " + uri);
        container.connectToServer(Client.class, URI.create(uri));
        messageLatch.await(100, TimeUnit.SECONDS);
    } catch (DeploymentException | InterruptedException | IOException ex) {
        Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex);
    }
  }
}

我的问题是在运行服务器时出现以下错误:

线程“main”java.lang.RuntimeException 中的异常:找不到实现类。在 javax.websocket.ContainerProvider.getWebSocketContainer(ContainerProvider.java:73) 在 test.Client.main(Client.java:80)

据我所知,错误是说 ContainerProvider. 但是我在项目中导入的 jar 中存在相同的类。

请纠正我或建议我哪里出错了。顺便说一句,我正在关注这个 git hub 项目。

https://github.com/koekiebox/javaee7-samples/tree/master/websocket/javase-client/src/main/java/org/javaee7/websocket/javase/client

提前致谢。

标签: javaeclipsewebsocket

解决方案


推荐阅读