1
承擔IntelliJ
開發,包裝在一個JAR,並使用「資源」文件加載從JAR,外面的classpath資源文件中的IntelliJ
- 可以位於任何封裝應用(不僅在
resources
文件夾) - 可能具有非標準文件擴展名(甚至可能是Java文件)
- 並不存在於所有的類路徑(例如,以避免循環依賴)
如果在一個包中的類(比如,MyClass
)(比方說,com.example.pack
)被賦予一個路徑到駐留其類路徑外部,並且嘗試經由
MyClass.class.getClassloader().getResourceAsStream(resourcePath);
的InputStream
對象返回給訪問這樣的「資源」 IntelliJ
由於類路徑,單元測試(預計)爲null
。但是,當代碼執行時,它將起作用,因爲所有內容都在同一個JAR中。
例如,捆紮在同一JAR(比如說,MyApplication.jar
)和運行的東西的應用程序的所有的包等
java -cp MyApplication.jar com.example.pack.MyClass
從命令行,確實產生非null
InputStream
。
有什麼辦法來配置IntelliJ
以某種方式「知道」的所有包屬於同一JAR
,從而相應地對待他們,因此,上述調用getResourceAsStream()
作品?
這不包括已經依賴於其他模塊的模塊,導致循環依賴。否則,答案是正確的。感謝和+1。 – PNS
IntelliJ項目結構確實支持循環依賴,所以這本身不是問題。 – yole