[英]Relative path on JAR file used in a web application
我有一個Java應用程序(非Web),必須從屬性文件中讀取。 該Java應用程序還必須作為JAR文件導出,然后在Web應用程序中使用,但是屬性文件未包含在JAR文件中。 它看起來像這樣:
/webapps/MyWebApp/WEB-INF/myJavaApp.jar
/webapps/MyWebApp/WEB-INF/config.properties
因此,當編碼將要導出為myJavaApp.jar的Java應用程序時,我無法執行此操作,因此它將從相對路徑讀取config.properties文件。 如果我輸入一個絕對路徑,它將正常工作:
properties.load(new FileInputStream("C:/Program Files/Apache Software Foundation/Tomcat 6.0/webapps/MyWebApp/WEB-INF/config.properties"));
但是,如果我嘗試使用相對路徑,則無法使用。 我嘗試了與此處或其他網頁不同的解決方案,但沒有一個起作用。
幾乎忘了,我正在讀取屬性文件的類是靜態的!
在Java應用程序中,您可以通過以下方式獲取當前目錄的絕對路徑:
System.getProperty("user.dir");
假設config.properties
位於同一目錄中,則應該能夠在Java代碼中找出此文件的絕對路徑,並且可以將其部署到任何位置,而無需在代碼中進行硬編碼。
編輯:
如果您的Java應用是可執行JAR,則僅當直接調用該命令時,上述命令才會返回正確的目錄。 如果從Windows平台上的另一個進程間接調用此應用程序,則起始目錄將為windows / system32,因此您必須分析jar的調用方式。 如果是后者,最好在Web應用程序中添加功能,以為jar提供屬性文件的路徑。
如果確保文件在類路徑上 ,則可以使用YourClassName.class.getResourceAsStream("/config.properties")
加載。 那將是實現它的最簡單方法。 對於您的WEB-INF/classes/
應用程序,將文件放在WEB-INF/classes/
,對於獨立應用程序,只需在啟動應用程序時設置類路徑。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.