[英]Load files External To The Distribution Jar
我已經編寫了一個Java程序,該程序可以從JAR文件打包並運行。 我需要具有一些用戶可更改的配置文件,這些文件只是以下內容的文本行:
鍵=值
格式。 要加載這些文件,我使用了此處描述的類。 當我通過Netbeans IDE運行程序時,由於在Project屬性中包括了用於存儲配置文件的目錄,因此一切正常。
當我將應用程序構建到JAR文件中時,就會出現問題。 因為我希望配置文件是用戶可編輯的,所以我將它們保留在JAR之外,但位於同一目錄中,但是現在當我從命令行運行應用程序時,它找不到配置文件。 如果我將文件手動添加到ROOT文件夾下的JAR文件中,那么一切都很好。
那么,如何告訴Java在JAR之外查找我的可加載文件? -classpath選項無效。
這是因為從jar運行時,它們的加載方式要求它們位於.jar
內;否則,它們必須位於項目目錄內; 它依賴於類加載器來告訴它在哪里可以找到文件。
如果要在.jar外部打開文件,則只需將其作為File
打開並讀入即可。
我們采用的方法之一是在命令行上使用外部文件名作為選項(例如java -jar myJar.jar -f filename
)。 這使您可以明確說明文件的位置。 然后,您可以決定是否還查找默認位置,或者如果未在命令行上指定文件,則在.jar中查找。
我遇到了同樣的問題,看到了您的帖子,但最后的答案很簡單。
我有一個通過Java Webstart部署的應用程序,並且正在Netbeans 7.3中構建它。
我有一個屬性文件config.xml,它將在運行時根據用戶首選項進行更新,例如“記住我的密碼”。 因此,它必須在jar文件外部。
Netbeans在項目文件夾下創建一個“ dist”文件夾。 此文件夾包含項目jar文件和jnlp文件。 我將config.xml復制到dist文件夾,並使用標准文件加載了屬性文件
FileInputStream in = new FileInputStream("config.xml");
testData.loadFromXML(in);
in.close();
我通過參考這個問題解決了它。 我將當前目錄添加到jar的MANIFEST文件中,並且可以正常工作。
我想知道為什么在這種情況下-classpath選項被忽略了嗎? 安全?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.