我有一個Java應用程序,並且log4j.properties文件位於src/com/my/path/props中。在編譯的,它被複制到類/ COM /我的/路徑/道具如何在用戶目錄更改時獲取文件的文件路徑?
文件通過PropertyConfigurator.configureAndWatch加載(user.dir來+ 「/classes/com/my/path/props/log4j.properties」)。
這一切都正常工作,雖然它不是理想的,因爲使用user.dir(但我不知道另一種方式來引用文件相對於「應用程序的開始目錄」)。嘗試使用NT Service包裝器運行此應用程序時,會出現此問題。以這種方式完成後,user.dir將從應用程序的根目錄更改爲NTService包裝器的exe文件所在的位置。
我的問題是:什麼是適當的方式來獲得一個log4j.properties文件的字符串文件路徑表示在我的課/ COM /我的/路徑/道具/目錄?我意識到如果道具文件在一個罐子裏,這將完全崩潰;但在這種情況下,它不是,只是文件系統上的一個文件。 ()。getClassLoader()。getResource(「com/my/path/props/log4j.properties」)。getURI())。getAbsolutePath(),但失敗了,因爲在生產中,文件的路徑實際上是UNC路徑,因此會拋出「URI具有權限組件」異常。
如何其他人處理這個問題?
謝謝。
我很困惑,因爲你說該文件被複制到類路徑(即在類目錄中),但後來你提到「user.dir」。如果您正在從類路徑加載文件,那麼「user.dir」是無關緊要的。你想從哪裏加載文件? – SingleShot 2009-09-14 23:10:05
由於Eclipse的正常編譯過程,它被複制到了classes目錄中。所以發生在部署時,prop文件位於classes目錄中 – 2009-09-14 23:13:09
OK,我會嘗試回答... – SingleShot 2009-09-14 23:22:28