簡體   English   中英

如何從命令行運行Eclipse編譯的Java類?

[英]How can I run an Eclipse compiled Java class from the command line?

我正在編寫一個基本的TCP聊天程序,其中一項要求是可以使用以下參數格式從命令行運行該程序:

java Server 8888
java Client localhost 8888

它將啟動偵聽8888的服務器,並等待接受來自客戶端的傳入連接。 然后啟動一個客戶端,並在localhost:8888連接到服務器。 這些類都可以在Eclipse中進行編譯和運行,我分別將上述變量添加到了這些類的運行配置中。

如果導航到CMD中的文件目錄,則可以看到已編譯的.class文件,但是當我嘗試使用以下命令運行服務器時:

java Server 8888

我得到錯誤

Error: Could not find or load main class Server

Eclipse> Window> Preferences> Java> Compiler顯示JDK 1.7

從命令行運行java -version顯示

java version "1.7.0_02"
Java(TM) SE Runtime Environment (build 1.7.0_02-b13)
Java HotSpot(TM) 64-Bit Server VM (build 22.0-b10, mixed mode)

我希望能夠從單獨的提示中並行運行兩個類。 有任何想法嗎?

java -cp . basicChat.Server 8888

您需要指定完全限定的類名稱(包括包名稱)

原因:

類全名(稱為全限定名)不是Server ,而是basicChat.Server 該文件位於名為basicChat的目錄下。 因此,java正在尋找與包名稱匹配的目錄結構。 Server.class文件位於文件系統中basicChat目錄下。

否則,如果您在不同的程序包(名稱空間)中有多個稱為Server類,那么考慮如何選擇所需的類。

您確定在這兩個類中都有main方法嗎?

public static void main(String[] args) { ... }

而且您的課程有public修飾符嗎?

如果您在例如test.Server的程序包中包含此類,則可以從bin文件夾運行test.Server ,如下所示:

java test.Server 8888

編譯此類:

public class Server {
    public static void main(String[] args) {
        System.out.println(Arrays.deepToString(args));
    }
}

並運行:

java Server 8888

給出輸出:

[8888]

您的CLASSPATH錯誤。 在bin目錄中嘗試以下操作(在Windows上):

java -cp .;%CLASSPATH% basicChat.Server 8888

另外,您可以在Eclipse中運行服務器。 為其創建運行配置,並在參數中指定端口。 然后,您可以在Eclipse中啟動它,它將在您停止或關閉Eclipse的情況下運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM