[英]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.