我正在開發一個應用程序,我必須指定一個名爲dao.properties的文件的路徑,它工作得很好,但是當我使用cmd執行jar時:java -jar StockManagement。 jar我得到的錯誤,該文件沒有找到(它在netbeans中工作正常) 類和文件在同一個文件夾中。 我已經嘗試了很多相對路徑並沒有什麼作品,所以這是我最後的希望 這裏是代碼和層次結構:相對路徑在執行jar時不起作用
感謝Ÿ提前
我正在開發一個應用程序,我必須指定一個名爲dao.properties的文件的路徑,它工作得很好,但是當我使用cmd執行jar時:java -jar StockManagement。 jar我得到的錯誤,該文件沒有找到(它在netbeans中工作正常) 類和文件在同一個文件夾中。 我已經嘗試了很多相對路徑並沒有什麼作品,所以這是我最後的希望 這裏是代碼和層次結構:相對路徑在執行jar時不起作用
感謝Ÿ提前
如果我沒有弄錯,你使用ClassLoader的方式是尋找一個相對於被調用的文件路徑。
從圖中看來,您使用的是DAOFactory類中的ClassLoader,對嗎?你聲明的路徑,你的文件是
stock/DAO/dao.properties
如果你從DAOFactory調用它時,Java在文件中
<where DAOFactory is>/stock/DAO/dao.properties
如果DAOFactory和dao.properties駐留在同文件我想你的文件路徑應該只是
dao.properties
因此,它看起來在DAOFactory是在同一個文件夾中。
編輯:使用DAOFactory類讀取屬性文件。
使用類似下面的代碼片段中,從僅使用的主要方法試試,看看您是否可以讀取屬性文件,而無需任何其他的DAOFactory類調用這個函數。更改您需要在本地機器上工作的任何類或名稱。
public static String getProperty(String property) {
String value = "";
try (InputStream is = DAOFactory.class.getResourceAsStream("dao.properties")) {
Properties prop = new Properties();
prop.load(is);
value = prop.getProperty(property);
} catch (Exception e) {
e.printStackTrace();
}
return value;
}
嗨,摩根感謝您的回答 它們位於相同的文件夾中,並且我在發佈之前試過這個,它沒有工作 – Sara
在某些時候,我看到你正在使用線程來嘗試讀取你的屬性文件。如果使用DAOFactory類而不是線程怎麼辦?看看編輯的答案以上? – morganw09dev
這就是我做Morgan的時候,我用DAOFactory代替線程 作爲F illippo suggedted 您的評論也幫了我很多,我瞭解了一些模糊的東西,非常感謝你 – Sara
http://stackoverflow.com/a/7098501/1352766這應該爲您提供一些有關您的問題的信息。 – morganw09dev
你能還張貼您正在使用,以試圖加載文件中的代碼片段? – morganw09dev
我可以在評論中做到嗎? – Sara