我確定這是一個愚蠢的問題,並且以前每個java程序員都一定會問這個問題。但我根本找不到相關的問題。使用導入的jar的Java命令行
這談論子目錄,但我沒有任何子目錄,因爲他們都是在同一個目錄中的java文件,我從Executable jar file error
該方案執行的命令行的目錄給我相同的錯誤我寫下:Java command line with external .jar
其他(我沒有鏈接)談論Eclipse和其他IDE,但我沒有使用IDE,只是一個Linux終端。
我想從http://www.hummeling.com/IF97導入一個公用的jar文件。下載的jar文件已被重命名爲if97.jar。
我有一個名爲steam.java與文件中這些命令的Java文件:
「
import com.hummeling.if97.IF97;
IF97 H2O = new IF97(IF97.UnitSystem.ENGINEERING);
System.out.println("test H2O table PSpecificEnthalpy(1): "+H2O.specificEnthalpyPT(1,300));
System.out.println("test H2O table PSpecificEnthalpy(5): "+H2O.specificEnthalpyPT(5,300));
」
但我不知道如何在命令運行此文件線。
我順利通過鍵入編譯:
'javac -cp if97.jar ~/test/steam.java'
現在我有一個名爲steam.class
文件但是,當我與執行:
'java steam -cp if97.jar'
或
'java steam -jar if97.jar'
使用終端com.hummeling.if97.IF97
我想執行這個在Linux操作系統Ubuntu 16.04:我得到的錯誤:
Exception in thread "main" java.lang.NoClassDefFoundError: com/hummeling/if97/IF97
at steam.start(steam.java:364)
at steam.main(steam.java:341)
造成的:拋出java.lang.ClassNotFoundException。這兩個文件(steam.java和if97.jar)都位於我執行javac命令的同一個主目錄中。
我相信(或者我錯了),問題是java無法找到jar文件。但我不知道爲什麼。
請提前告知,謝謝。
'〜/ test'還需要在類路徑中。而且由於shell只會擴展'〜',如果它是參數中的第一個字符,它需要首先('-cp〜/ test:if97.jar')或需要擴展('-cp if97.jar: $ HOME/test')。 – VGR
@VGR OP的錯誤消息表明,流。類本身已經找到了,所以我假設OP以某種方式將它複製到當前目錄中,並且不需要在類路徑上具有'〜/ test'。 – jingx
Jingx的答案沒有奏效(錯誤是無法找到或加載主類蒸汽) - 爲什麼? 但是,VGR註釋工作: 'java命令〜/測試:if97.jar蒸汽', 這也工作: 'java命令if97.jar:$ HOME /測試蒸汽'。 感謝您的回答,但我不明白爲什麼VGR的建議工作,但不是jingx的答案。 – Azrudi