Java 错误:无法找到或加载main类main

Java 错误:无法找到或加载main类main,java,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(12

我有一个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
已生成

现在,根据该,我正在尝试运行该程序:

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

有什么问题吗?

您需要从所使用的软件包目录上方的一个级别进行引用。这里的包是com.server.main,这意味着您的目录结构是:

src/  
    com/  
        server/  
            main/  
                Main.java  
                Main.class  
您不一定需要位于src目录(这就是我们使用-cp或-classpath选项的原因)并给出以下命令

使用:


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

java -cp C:\Users\workspace\Tests\src com.server.main.Main
您还可以移动到项目的顶部文件夹,并使用

cd C:\Users\workspace\Tests\src
java -cp . com.server.main.Main
最后,您可以将该文件夹添加到您喜欢的文件夹中

看这里:


我发现在terminal中编译并运行java应用程序的问题有答案。

您需要在当前位置上方的三个目录中运行
java com.server.main.main
,因为包的名称是类名称的一部分。您还需要准备一本基本的Java书籍或在线教程。@DavidWallace。我想你能给我一个答案吗?我为什么要麻烦你?在我发表评论后,另外两个人发布了与答案大致相同的信息。我认为没有必要再加上第三个几乎相同的答案。如果你想接受一个答案,从两个答案中随机选择一个。这是最核心的事情是使用完全限定的类名。。。我不知道。
cd C:\Users\workspace\Tests\src
java -cp . com.server.main.Main
set CLASSPATH=C:\Users\workspace\Tests\src
java com.server.main.Main