【发布时间】:2011-05-21 12:49:31
【问题描述】:
我正在使用 maven 2.1.0 并且有一个包含多个模块的项目。 示例模块:
- spr 资源
- spr-常见
spr-common 依赖于 spr-resources
spr-resources 只包含文件,不包含类。
spr-common 有一个 junit,需要从 spr-resources jar 加载文件。
我用过:
String fileName = getClass().getResource("/jaskeyfile.3DES").getFile();
is = getClass().getClassLoader().getResourceAsStream(fileName);
is.read(data);
这在我在 IntelliJ 中运行测试时有效,但是当我执行 mvn 测试时,当我尝试对其执行 read() 时它会失败并出现 NullPointerException。
为什么会这样?它应该从依赖项中读取文件就好了。
另外,spr-common 中的 pom.xml 依赖于 spr-resources(尝试了范围测试和没有它)
编辑: 我也试过了
getClass().getClassLoader().getResourceAsStream("/jaskeyfile.3DES");
没有运气。
编辑2: 给定的文件存在于生成的 jar 中,所以我想它应该可以访问。
【问题讨论】:
-
嗯,这很奇怪。你有没有尝试过更简单的方法:
InputStream is = getClass().getResourceAsStream("/java/pkg/with/your/file/filename.txt");?spr-resources依赖项是否真的在pom.xml文件中定义,而不仅仅是在您的 IDE 中?如果在 CLASSPATH 上找不到资源,则返回的流是null。编辑:文件真的在src/main/resources/java/pkg/with/your/file/filename.txt目录中的spr-resources中吗? -
如果你运行 mvn test,测试会在这个特定模块上本地运行。如果您需要其他模块 spr-resource,则必须将其定义为测试依赖项,否则您将不会在测试用例中看到它。
-
我认为你看到了所有的编译和测试依赖。所以没有必要将其定义为测试依赖项。
-
老问题,但您从未就此提供过反馈!? ://