使用Jenkins的recsource文件路径不正确

ego6inou  于 2022-11-21  发布在  Jenkins
关注(0)|答案(1)|浏览(205)

我 使用 的 是 资源 目录 中 的 一 个 文件 , 使用 以下 代码 调用 它 :x1月 1 日
它 在 我 的 本地 计算机 上 运行 良好 , 文件 路径 正确 :C:/Work/PROJECT_NAME/test/selenium/target/classes/testData
然后 , 我 希望 在 Linux 环境 中 的 服务 器 上 的 Jenkins 作业 中 使用 它 , 但 我 收到 NullPointerException :
[WARNING] File 'var/lib/jenkins/workspace/project/test/selenium/target/classes/testData/' does not exist
这 是 因为 路径 中 " project " 和 " test " 文件 夹 之间 有 一 个 丢失 的 " workspace " 目录 , 正确 的 路径 应该 是 :var/lib/jenkins/workspace/project/ws/test/selenium/target/classes/testData 所 需 的 文件 确实 存在 , 但 由于 某种 原因 Jenkins 构建 了 错误 的 路径 , 丢失 了 /ws/ 目录 。 有人 能 帮 我 一 把 吗 ? 为什么 class.getClassLoader().getResource("testData").getPath() 在 服务 器 上 不能 正常 工作 ?
我 在 Maven pom 文件 中 设置 了 资源 :
<resource> <directory>resources</directory> </resource>

ekqde3dh

ekqde3dh1#

使用 .getResource("testData") 可能 会 导致 问题 , 因为 您 根本 不 知道 资源 是否 可以 访问 。
At runtime, the resource folder is seldom in the same location on disk as it is in our source code. 所以 我们 需要 另 一 种 访问 文件 的 方法 。
因此 , 首选 方法 是 使用 getResourceAsStream(String) , 它 返回 一 个 可以 直接 读取 的 InputStream 。
最 好 从 类 路径 而 不是 特定 文件 位置 加载 资源 :

try (InputStream inputStream = getClass().getResourceAsStream("/testData");
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream))) {
String contents = reader.lines()
  .collect(Collectors.joining(System.lineSeparator()));
}

中 的 每 一 个

相关问题