[英]Classpath variable in java
我正在讀取應用程序中的一些文件,並將它們稱為new File("src/main/resource/filename")
並且可以正常工作。 但是當我用Maven程序集插件打包jar並運行java - jar
,自然會出現錯誤:
發生錯誤:
src\\main\\resources\\UPDATE.txt
(系統找不到指定的路徑)
由於jar中沒有src/main/resources
,我如何將src/main/resources
稱為某種類路徑變量,以便該應用程序既可以在獨立的Java中也可以在組裝好的jar中工作?
您將需要使用Class.getResourceAsStream()方法加載文件
例如
InputStream str = getClass().getResourceAsStream("/UPDATE.txt");
或者,如果您使用的是靜態方法,則顯式指定類
InputStream str = MyApp.class.getResourceAsStream("/UPDATE.txt");
編輯:
使用StreamSource
,只需將輸入流傳StreamSource
流源中,例如
new StreamSource(getClass().getResourceAsStream("/UPDATE.txt"));
但是請注意,如果資源不存在,則getResourceAsStream返回null,因此您可能需要顯式檢查並拋出異常。
src / main / resources是開發時間約定,后跟maven項目以放置源代碼以外的工件。 一旦構建了jar,就將它們添加到類路徑中。 因此,在您的示例場景中,UPDATE.TXT位於類路徑的根目錄下。
因此,您應該從類路徑而不是文件系統中引用資源。 http://mindprod.com/jgloss/getresourceasstream.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.