2014-11-09 171 views
2

我以前做的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

您需要將上述三個目錄放在您現在的位置,然後運行'java com.server.main.Main',因爲軟件包的名稱是該類名稱的一部分。您還需要獲得基本的Java書籍或在線教程。 – 2014-11-09 06:04:07

+0

@DavidWallace正好。 Tahnk你 – user3663882 2014-11-09 06:06:09

+0

你可以把它作爲答案嗎? – user3663882 2014-11-09 06:07:13

回答

1

Main是在一個包,我相信你需要

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

您也可能會移動到你的項目的頂層文件夾,並使用.

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

最後,可以將該文件夾添加到您的CLASSPATH

set CLASSPATH=C:\Users\workspace\Tests\src 
java com.server.main.Main 
+0

這是核心的事情是使用完全合格的類名...我不知道這一點。 – user3663882 2014-11-09 08:41:19

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 
相關問題