我无法理解如何以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