我 使用 的 是 资源 目录 中 的 一 个 文件 , 使用 以下 代码 调用 它 :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>
1条答案
按热度按时间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 。最 好 从 类 路径 而 不是 特定 文件 位置 加载 资源 :
中 的 每 一 个