java - 错误: Could not find or load main class TestClient

标签 java class websocket socket.io

我正在尝试使用此处提供的示例代码构建一个 HelloWord websocket 客户端:https://github.com/Gottox/socket.io-java-client/blob/master/examples/basic/BasicExample.java

目标是连接到使用以下内容的 Flask 服务器:https://github.com/miguelgrinberg/Flask-SocketIO-Chat我用 python 构建的客户端工作正常,但是我还需要构建一个 java 客户端。

我见过很多不同的解决方案,建议在编译期间添加 -cp,但仍然收到相同的消息 Error: Could not find or load main class TestClient 我做错了什么?

我正在使用这个脚本来编译和运行。

#!/bin/sh
export JAVA_HOME="/usr/lib/jvm/java-8-oracle"
/usr/lib/jvm/java-8-oracle/bin/javac TestClient.java -cp /home/erm/git/Flask-SocketIO-Chat/*.jar:*:.:./
echo "exitcode:$?"
/usr/lib/jvm/java-8-oracle/bin/java TestClient

这是输出:

exitcode:0
Error: Could not find or load main class TestClient

TestClient.java

import io.socket.IOAcknowledge;
import io.socket.IOCallback;
import io.socket.SocketIO;
import io.socket.SocketIOException;

import org.json.JSONException;
import org.json.JSONObject;

public class TestClient implements IOCallback {
    private SocketIO socket;
    /**
     * @param args
     */
    public static void main(String[] args) {
        System.out.println("Hello, World");
        try {
            new TestClient();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public TestClient() throws Exception {
        socket = new SocketIO();
        socket.connect("http://127.0.0.1:5000/", this);

        // Sends a string to the server.
        socket.send("Hello Server");

        // Sends a JSON object to the server.
        socket.send(new JSONObject().put("key", "value").put("key2",
                "another value"));

        // Emits an event to the server.
        socket.emit("event", "argument1", "argument2", 13.37);
    }
    @Override
    public void onMessage(JSONObject json, IOAcknowledge ack) {
        try {
            System.out.println("Server said:" + json.toString(2));
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void onMessage(String data, IOAcknowledge ack) {
        System.out.println("Server said: " + data);
    }

    @Override
    public void onError(SocketIOException socketIOException) {
        System.out.println("an Error occured");
        socketIOException.printStackTrace();
    }

    @Override
    public void onDisconnect() {
        System.out.println("Connection terminated.");
    }

    @Override
    public void onConnect() {
        System.out.println("Connection established");
    }

    @Override
    public void on(String event, IOAcknowledge ack, Object... args) {
        System.out.println("Server triggered event '" + event + "'");
    }
}

最佳答案

错误信息

错误:无法找到或加载主类 TestClient

表示 Java 启动器无法找到/加载类文件 TestClient.class

要正确加载它,类文件本身和 jar 文件 socketio.jar 都需要位于类路径上。所以请尝试一下

/usr/lib/jvm/java-8-oracle/bin/java -cp .:socketio.jar TestClient

/usr/lib/jvm/java-8-oracle/bin/java -cp/home/erm/git/Flask-SocketIO-Chat:/home/erm/git/Flask-SocketIO-Chat/socketio.jar TestClient

关于java - 错误: Could not find or load main class TestClient,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39551084/

相关文章:

java - 如何使用未知节点将 Firebase 数据库中的值显示到 Firebase 回收 View ?

java初始化一个类的字段

同一 URL 上的 Apache2 WebSockets 反向代理

c++ - 类中的析构函数发生内存泄漏,该类的嵌套类为私有(private)

c# - 在接口(interface)中声明继承接口(interface)的所有方法?

javascript - WebSocket 不发送数据

go - 为什么 AWS API Gateway websocket 发送错误

java - 使用Gson 2.3.1解析Json文件

java - 为什么可以访问嵌套静态类的成员?

java - 使用 GWT 生成器进行自定义注释