[英]Loading a resource file from a JAR, outside classpath, in IntelliJ
假設使用IntelliJ
開發的應用程序打包在一個JAR中,並使用“資源”文件
resources
文件夾中) 如果為包(例如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.