簡體   English   中英

在IntelliJ中從類路徑之外的JAR加載資源文件

[英]Loading a resource file from a JAR, outside classpath, in IntelliJ

假設使用IntelliJ開發的應用程序打包在一個JAR中,並使用“資源”文件

  • 可以放在任何包中(不僅在resources文件夾中)
  • 可能具有非標准文件擴展名(甚至可能是Java文件)
  • 不是在所有類路徑中都存在(例如,避免循環依賴)

如果為包(例如com.example.pack )中的類(例如MyClass )提供了指向此類“資源”的路徑,該“資源”位於其類路徑之外,並嘗試通過

 MyClass.class.getClassloader().getResourceAsStream(resourcePath);

由於類路徑,在IntelliJ單元測試中返回的InputStream對象(預期)為null 但是,由於所有內容都在同一個JAR中,因此在執行代碼時它可以工作。

例如,將應用程序的所有軟件包捆綁在同一JAR中(例如MyApplication.jar ),然后運行類似

java -cp MyApplication.jar com.example.pack.MyClass

從命令行,確實會產生一個非null InputStream

有什么方法可以配置IntelliJ以某種方式“知道”所有程序包都屬於同一個JAR ,從而對其進行相應的處理,以便對getResourceAsStream()的上述調用可以正常工作?

唯一的配置方法是將包含資源文件的模塊添加為對包含測試的模塊的依賴項。 然后,IntelliJ IDEA將將該模塊包含在測試的運行時類路徑中,並且getResourceAsStream()調用將起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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