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

时间:2014-11-09 06:03:08

标签: java

我是java类:

package com.server.main;

import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class Main {
    public static void main(String args[]) throws Exception{
        ServerSocket server = new ServerSocket(12345);
        Socket client = server.accept();
        PrintWriter writer = new PrintWriter(client.getOutputStream());
        writer.write("Hello from server");
    }
}

现在我正在尝试编译并运行它。我所做的是:

javac Main.java

没关系,生成Main.class

现在,根据 post ,我试图运行该程序:

java -cp C:\Users\workspace\Tests\src\com\server\main Main
java -cp C:\Users\workspace\Tests\src\com\server\main Main.class
java -cp . Main
java -cp . Main.class

所有这些都产生了输出:

Error: Could not find or load main class Main

怎么了?

3 个答案:

答案 0 :(得分:2)

您的Main在一个包中,我相信您需要

java -cp C:\Users\workspace\Tests\src com.server.main.Main

您也可以移至项目的顶级文件夹,并使用{/ 1}}

.

最后,您可以将该文件夹添加到CLASSPATH

cd C:\Users\workspace\Tests\src
java -cp . com.server.main.Main

答案 1 :(得分:1)

您需要从正在使用的包目录上方的某个级别进行引用。所以你的包是com.server.main,这意味着你的目录结构是:

src/  
    com/  
        server/  
            main/  
                Main.java  
                Main.class  

您不一定需要在src目录中(这是我们使用-cp或-classpath选项的原因)并提供以下命令

使用:

java -cp C:\Users\workspace\Tests\src com.server.main.Main

答案 2 :(得分:-1)

看这里: http://docs.oracle.com/javase/tutorial/getStarted/problems/index.html

我发现在编译并在终端中运行java应用程序的问题可以解答我的问题。