【发布时间】:2013-04-25 13:41:15
【问题描述】:
我有类似下面的项目结构
-project
-src/main/java // source folder
-com.mypackage
-Utility.java
-some.properties
-src/main/resources // source folder
-configuration_files
-configuration_report.txt
我正在使用 Eclipse 的 Export 函数生成 jar。以上转换为jar,结构如下:
-myjar.jar
-com
-mypackage
-Utility.class
-some.properties
-configuration_files
-configuration_report.txt
在Utility 类中,我试图从configuration_report.txt 获取InputStream。
我正在这样做(它在 static 方法中):
Utility.class.getResourceAsStream("/configuration_files/configuration_report.txt");
这似乎得到了this question 的答案的验证,因为该文件与请求它的类不在同一个包中。
但是,当我运行它时,它会返回 null。为什么?
请注意,对于 some.properties 文件,我可以同时做这两件事
Utility.class.getResourceAsStream("/com/package/some.properties");
Utility.class.getResourceAsStream("some.properties");
我会得到流。
如果有什么不同,我会从命令行运行它。
java [-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=1044] -cp myjar.jar MyMain
如果我尝试在 Eclipse 中运行它,它可以工作...
编辑:
此代码是相关的。不管有没有前面的/,它都返回null
String sourceFilePath = "/configuration_files" + File.separator + "configuration_report.txt";
InputStream in = Utility.class.getResourceAsStream(sourceFilePath);
【问题讨论】:
标签: java eclipse classloader