快速之一。我試圖部署一個程序,它在以下代碼中生效。我想讀取一個名爲,properties
的屬性文件。的Java - 運行JAR拒絕加載文件在同一目錄
Properties props = new Properties();
InputStream is;
// First try - loading from the current directory
try {
File f = new File("properties");
is = new FileInputStream(f);
} catch (FileNotFoundException fnfe) {
fnfe.printStackTrace(System.err);
is = null;
}
try {
if (is == null) {
// Try loading from classpath
is = getClass().getResourceAsStream("properties");
}
//Load properties from the file (if found), else crash and burn.
props.load(is);
} catch (IOException e) {
e.printStackTrace(System.err);
}
當我通過Netbeans運行程序時,一切順利。
當我單獨運行JAR時,雖然有,但我得到兩個例外。
java.io.FileNotFoundException: properties (The system cannot find the file specified)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(Unknown Source)
.
.
.
Exception in Application start method
Exception in Application stop method
java.lang.reflect.InvocationTargetException
.
.
.
(exception during props.load(is) because is == null)
我從「dist」文件夾運行文件。我已經嘗試將屬性文件放在jar文件夾內,沒有結果。通常,properties
文件位於根項目文件夾中。
任何想法?
嘗試使用絕對路徑到文件。當您從類路徑請求文件時,請確保該文件確實位於類路徑中,可以使用java VM選項的「-cp/some/dir」。還請嘗試使用前導斜槓字符,以便請求的資源具有絕對路徑,如「/ properties」。如果您仍然有問題,可以確認您正在使用的平臺以及Java VM啓動選項和命令行。 –
它應該在您運行'java'命令的目錄中。否則,它正在看Jar本身,這是你的第二個'嘗試'。你期望它能在文件系統或jar中找到它嗎? – RealSkeptic
如果你想讀相對於當前目錄中的文件,該文件必須是在你的,不一定是罐子在目錄中運行該命令的目錄 –