我剛剛從IDE切換回記事本來編寫Java程序。該計劃正在使用20個JAR。我編譯成功。當我決定運行Java類文件時使用運行Java命令,包括當前文件夾中的所有JAR
java -cp ".\\*" MyProgram
它給出標準錯誤「無法找到或加載主類....」。
我很困惑,因爲當我用現有文件夾中的所有文件運行java
命令時,它只會獲得這些JAR,因爲當前文件夾已經在類路徑中。當程序從當前文件夾運行時,我嘗試使用-cp "."
將它明確地包含在類路徑中,但這也不起作用。
最後我能夠用這個命令運行程序:
java -cp ".\\*;." MyProgram.java
我問這個問題,瞭解背後的Java的類路徑中的實際邏輯。
糾正我,如果我錯了,但我認爲JAR只是一個標準的歸檔,其中所有的軟件包都封裝在各自的文件夾中。
java -cp "." MyProgram
或者乾脆:如果所有的JAR文件都在我的當前文件夾包括我的主類文件,那麼爲什麼我不能與運行
java MyProgram
如果問題是與多個JAR文件包括這就是爲什麼我們使用".\\*"
包括在類路徑中的所有JAR文件,那麼爲什麼我們要明確在classpath中再次使用包含在當前文件夾:
java ".\\*;." MyProgram
http://docs.oracle.com/javase/8/docs/technotes/tools/windows/classpath.html。請參見「類路徑通配符」一節。 Quote:「類路徑條目可以包含基本名稱通配符('*'),這被認爲是相當於指定擴展名爲.jar或.JAR的目錄中所有文件的列表。例如,類路徑entry'mydir/*'指定名爲mydir的目錄中的所有JAR文件,由'*'組成的類路徑條目展開爲當前目錄中所有jar文件的列表。所以你真的只需要'cp'* ;.「' –