簡體   English   中英

Web應用程序中使用的JAR文件的相對路徑

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM