gpt4 book ai didi

java - 从maven junit中的依赖jar加载文件

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:27:07 27 4
gpt4 key购买 nike

我正在使用 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 中,所以我想它应该是可访问的。

最佳答案

仔细检查一切

这是一个要完成的列表:

  1. 文件 jaskeyfile.3DES 位于 spr-resources 模块内的 src/main/resources
  2. 您的本地存储库包含最新版本的 spr-resources-x.y.z-SNAPSHOT.jar(或者您已直接发布/版本控制)并且您肯定已经在其上使用了 mvn clean install
  3. spr-common 模块引用了 spr-resources-x.y.z.jar 的正确(命名)版本(编译范围将在测试和编译类路径中看到)

如果以上所有条件都为真,那么您的 getClass().getResourceAsStream("/jaskeyfile.3DES") 调用应该有效。我在我的项目中一直使用这种结构,所以你不会在这里要求月亮或任何东西。

关于java - 从maven junit中的依赖jar加载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4376032/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com