[英]Loading a file from dependency jar inside maven junit
我正在使用maven 2.1.0并且有一个包含多个模块的项目。 示例模块:
spr-common依赖于spr资源
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");
没有运气。
EDIT2:给定的文件存在于生成的jar中,所以我想它应该是可访问的。
仔细检查一切
这是一个可以解决的列表:
jaskeyfile.3DES
位于spr-resources模块中的src/main/resources
中 如果以上所有都是真的那么你的getClass().getResourceAsStream("/jaskeyfile.3DES")
调用应该工作。 我在我的项目中一直使用这种结构,所以你不要在这里要求月亮或任何东西。
我认为问题可能出在领先的斜线上。 我认为这两个都应该有效:
getClass().getResourceAsStream("/jaskeyfile.3DES")
getClass().getClassLoader().getResourceAsStream("jaskeyfile.3DES")
Class.getResourceAsStream()
接受相对于类的包目录的路径,因此它接受前导斜杠。
ClassLoader.getResourceAsStream()
已经采用绝对路径,因此它不接受前导斜杠。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.