2013-02-18 181 views
2

我有一個批處理文件來設置類路徑調用Java的主要方法之前,請參見下面Java類路徑問題文件

SET CLASSPATH=%CLASSPATH%;libs/xyz1.jar 
SET CLASSPATH=%CLASSPATH%;libs/xyz2.jar 
SET CLASSPATH=%CLASSPATH%;libs/xyz3.jar 
SET CLASSPATH=%CLASSPATH%;libs/xyz4.jar 
SET CLASSPATH=%CLASSPATH%;libs/xyz5.jar 
SET CLASSPATH=%CLASSPATH%;libs/xyz6.jar 
SET CLASSPATH=%CLASSPATH%;/resource 

java -classpath %CLASSPATH% com.xyz.main 

代碼,如果我把我的財產,它工作正常的資源文件夾內的文件,但如果我將其保留在根文件夾中,則不起作用。

SET CLASSPATH=%CLASSPATH%;libs/xyz1.jar 
SET CLASSPATH=%CLASSPATH%;libs/xyz2.jar 
SET CLASSPATH=%CLASSPATH%;libs/xyz3.jar 
SET CLASSPATH=%CLASSPATH%;libs/xyz4.jar 
SET CLASSPATH=%CLASSPATH%;libs/xyz5.jar 
SET CLASSPATH=%CLASSPATH%;libs/xyz6.jar 

java -classpath %CLASSPATH% com.xyz.main 

上面的類路徑設置不工作我得到空指針異常

SET CLASSPATH=%CLASSPATH%;libs/xyz1.jar 
SET CLASSPATH=%CLASSPATH%;libs/xyz2.jar 
SET CLASSPATH=%CLASSPATH%;libs/xyz3.jar 
SET CLASSPATH=%CLASSPATH%;libs/xyz4.jar 
SET CLASSPATH=%CLASSPATH%;libs/xyz5.jar 
SET CLASSPATH=%CLASSPATH%;libs/xyz6.jar 
SET CLASSPATH=%CLASSPATH%;/ 

java -classpath %CLASSPATH% com.xyz.main 

上面的類路徑設置不工作我得到同樣的空指針異常。

正在使用java util屬性,如下所示。

InputStream inputStream = this.getClass().getResourceAsStream("/abc.properties"); 
    getProperties().load(inputStream); 

如果有人能幫我找到,爲什麼會發生這種情況,這將是非常好的。先謝謝你。

回答

2

您需要在CLASSPATH中包含「./」。您正在有效地告訴JVM排除它。

4

調用getResourceAsStream()會導致java查找可用於當前類加載器的資源,即可以在您的類路徑中找到的資源。如果您想從文件系統讀取文件,請改用new新的FileInputStream(「abc.properties」)。如果您想繼續從資源中讀取文件,則必須將其包含到您的類路徑中,並將其包含到您的一個jar文件中或作爲單獨的條目。

甚至可以實現從類路徑中讀取文件的邏輯,然後使用文件系統中找到的文件覆蓋值。

順便說一句,看看jackarata configuration包內置此功能。

2

這是因爲類路徑是從當前目錄.檢查會做最好的
即使你不包括你的屬性文件中的資源文件夾,運行Java程序如提及下面將工作完全

java -cp .;%CLASSPATH% com.xyz.main 

注意:CP是類路徑

速記