我是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
怎么了?
答案 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应用程序的问题可以解答我的问题。