2016-01-22 34 views
0

當我將-classpath參數設置爲java啓動時,它將只拾取具有.jar擴展名的文件,或者它將嘗試查看-classpath路徑中的其他文件?如果我指定-classpath/mypath包含JVM只會提取.jar文件嗎?

/mypath/IAmANormalJar.jar 
/mypath/IAmAJarWithoutExtension 

其中IAmAJarWithoutExtension是一個實際的jar文件,但沒有.jar擴展

含義。只會/mypath/IAmANormalJar.jar由JVM加載或將/mypath/IAmAJarWithoutExtension加載呢?

+0

如果你的類路徑是'/ mypath',那麼這些文件都不會被拾取。在這種情況下,'/ mypath'將被拾取。這與將'/ mypath/*'指定爲類路徑不同。但是...如果你要指定'/ mypath/*'作爲類路徑,爲什麼不用'/ mypath/*。jar'使你的問題變得過時? – Holger

回答

5

http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/classpath.html

類路徑條目既不是目錄也不是歸檔文件(.zip或 .jar文件),也沒有*被忽略。

通配符符號說明:

類路徑條目可以包含基名通配符, 這被認爲是等同於指定在擴展的目錄中的所有文件 的列表的.jar或.JAR。例如, 類路徑條目foo/指定名爲 foo的目錄中的所有JAR文件。由*的一個簡單的類路徑條目擴展到所有 在當前目錄下的jar文件的列表。無論文件是否隱藏,文件將被視爲 (即,名稱爲 以'。'開頭)。

1

Java類路徑需要的jar完成與擴展中規定的。如果沒有擴展名,Java會將其視爲存在要添加到Java類路徑中的類文件的目錄。在Java類路徑維基百科的文章在這方面提供一些有用的信息:

https://en.wikipedia.org/wiki/Classpath_(Java)

0

它只會拿起帶有擴展名的.class,.jar或.zip文件。一招我用的時候想兩瓶測試之間的翻轉將另一部分添加到我想成爲「走出去」要使用的文件。如果我想測試的版本是mylib.jar,我將修改舊如mylib.jar.old,他們可以共存於該目錄。