簡體   English   中英

Java中的類路徑變量

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

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