![](/img/trans.png)
[英]How to Run a Java Class File from the Command Line that was Compiled by Eclipse? External Jar problems
[英]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.