2011-09-29 165 views
2

我想從我的終端運行一個Java程序。我有Mac OS X 10.7。如何從終端運行Java程序?

teamL javac -jar kxml2-2.3.0.jar XMLHandler.java ServiceEndpoint.java TeamL.java

這是我的Eclipse類文件結構:

eclipse class file structure

我無法找到這是爲什麼扔Unable to access jarfile kxml2-2.3.0.jar

+0

對我來說,它看起來像它沒有找到jarfile – Neifen

+0

@Vinisa,接受答案並關閉這個問題 – Rakesh

回答

6

如果您正在引用任何外部庫,那麼您必須將它們添加到classpath。您可以通過這種方式在編譯類時添加它。

轉到src目錄和:

javac -classpath ".:<path_to_jar_file>" teamL/*.java 

執行:

java -cp ".:<path_to_jar_file>" teamL.<class_name> 

如果您使用Eclipse,然後去<project_directory>/bin/在這裏你可以找到已編譯的類(所以你不要有以編譯它們)並使用上述命令直接運行它們java命令

注意:由於您的類按teamL p ackage,你必須通過指定完全限定名稱來運行包裝外的類,如teamL.ServiceEndpoint

+0

你不能使用'-jar'用於編譯,'-jar'用於直接執行jar應用程序。我不知道你的項目文件夾在哪裏!我想你一定知道如何使用終端中的'cd'命令來改變當前目錄。只需在終端中cd到'Documents/adsproject/ADS_Deliverable1/src /',然後選擇'javac -classpath':「teamL/* .java' – Rakesh

+0

確定看截圖,我看到你的項目目錄是'home/Users/vsingh3/Documents/adsproject/ADS_Deliverable1'打開一個新的終端,然後鍵入'cd Documents/adsproject/ADS_Deliverable1/src'然後'javac -classpath「。:Documents/adsproject/ADS_Deliverable1/」teamL/* .java' – Rakesh

+0

謝謝,但我只是注意到你的意見,如果你是在日食上運行。所以,我想我不需要編譯。另一件事是,因爲我的jar文件沒有找到,所以我複製粘貼它在每個文件夾。我在'ADS_Deliverable1-> src-> teamL'中擁有所有源文件和jar文件。我現在正在運行它像''teamL java -cp -jar kxml2-2.3.0.jar XMLHandler.java ServiceEndpoint.java TeamL.java'爲什麼在線程中拋出'Exception「main」java.lang。NoClassDefFoundError:kxml2-2/3/0/jar 引起:java.lang.ClassNotFoundException:kxml2-2.3.0.jar' – Ava

0

當您在命令行上執行程序時,是否將該jar添加到類路徑中?例如

的java -classpath location_of_jar ...

0

javac是編譯的,與其你應該使用命令的Java命令。

  • 首先設置CLASSPATH
  • 然後運行它像這樣

java -classpath %classpathVariable% %YourClass% %arguments...

Running a Java Program from Command Prompt這可以給你一個更好的主意是Windows,但與此類似。