簡體   English   中英

Java類路徑通配符不能在沒有引號的情況下工作

[英]Java classpath wildcard not working without quotes

我有一個包含大量jar文件和類路徑的文件夾:

-classpath ./classes:./jogamp-all-platforms/jar/*

但它找不到包裝。 為了確保我有資源,我手動找到包含它的jar並將類路徑更改為:

-classpath ./classes:./jogamp-all-platforms/jar/jogl-all.jar

而現在它並沒有抱怨找不到包裹。

在Debian下,我不得不在通配符周圍加上引號,以便工作: "*"

然后編譯命令變為:

javac -cp ~/my\ stuff/Java/"*" test.java

我正在使用JDK,JRE 8。

問題是*擴展到目錄中的所有條目,類路徑語法允許在您的平台上用:內容分隔的目錄和jar文件。 *已展開,將包含目錄中的所有jar,您將以以下內容結束:

-classpath ./classes:./jogamp-all-platforms/jar/jogl-all.jar another.jar etc.jar

如果在./jogamp-all-platforms/目錄中,你有jogl-all.jar another.jar etc.jar jar。

您可以使用以下內容來逃避shell的*擴展:

-classpath './classes:./jogamp-all-platforms/jar/*'

這樣您的編譯器將解釋*擴展。

我想你需要用; 作為./classes之后的路徑分隔符如下:

 -classpath ./classes;./jogamp-all-platforms/jar/*

另請注意:

Subdirectories are not searched recursively. For example, jogamp-all-platforms/jar/* looks for JAR/Class files only in jogamp-all-platforms/jar, not in jogamp-all-platforms/jar/abcd, jogamp-all-platforms/jar/efc, etc.

通過執行-classpath ./classes:./jogamp-all-platforms/jar/* ,它-classpath ./classes:./jogamp-all-platforms/jar/*查看jogamp-all-platforms/jar文件夾中的所有JAR。

有關更多詳細信息,請參閱此處的文檔 - 類路徑中的通配符

第一種形式不起作用。 您無法使用通配符加載jar文件。 除非您缺少依賴類,否則第二種形式應該有效。

暫無
暫無

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

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