我無法理解如何以eclipse和jar的方式加載資源。Java classLoader和getResourceAsStream
在我的項目中,我有一個源文件,src
。 在那之下,我創建了一個新的包,可以將資源(圖像,音頻..)導入到。 因此它的資源爲src/resources
,而src/com/Mainclass.java
。
現在,我從其他答案瞭解,.class.getResource(); 開始在類的目錄中查找。除了從eclipse提取jar的類的目錄改變。 換句話說,
MainClass.class.getResourceAsStream("/resources/img.png")
只在Eclipse工作。
我甚至不確定它爲什麼可行,因爲資源與主類不在同一條路徑中。我會反而期待../resources/img.png工作,因爲我們會從com。至src/,其中資源是。
不過,一旦我提取物作爲一個罐子,我覺得裏面,分離:
<root of the jar>/com/mainclass.java
<root of the jar>/src/resources
所以這是行不通的。
更簡單的解決方案是:如何找到MainClass.class.getResourceAsStream(「/ resources/img.png」)加載的確切目錄? 我試過把/ resources /放在每個子文件夾中,但它仍然無法工作。 IT將在eclipse之外工作,如果資源文件夾與jar相同,但不在jar本身內。
這裏是我的構建路徑:
我沒有外部庫,項目是一個Maven Java項目。
我認爲你應該閱讀Maven的基本文檔。 Eclipse中使用的源代碼/編譯佈局以Eclipse方式(很多)和Maven方式(一點)混合使用。 – davidxxx
爲了全局理解,請閱讀:https://maven.apache.org/guides/getting-started/。 有關資源需求,請閱讀:https://maven.apache.org/plugins/maven-resources-plugin/examples/resource-directory。html – davidxxx