一尘不染

为什么詹金斯无法加载资源?

jenkins

这是我的项目的布局:

src/
  test/
    resources/
        ares/
          file1.xml
          file2.xml

这是Jenkins工作区的布局:

 my-module/
   target/
     test-classes/
       ares/
         file1.xml
         file2.xml

在eclipse下,测试运行没有任何错误。在詹金斯身上,测试只是失败了。Jenkins无法找到资源。以下是测试执行的一些输出:

eclipse

MyClass.class.getResourceAsStream(/ares/file1.xml) => java.io.BufferedInputStream@4f4b2f1a
MyClass.class.getResourceAsStream(ares/file1.xml) => null

Thread.currentThread().getContextClassLoader().getResourceAsStream(/ares/file1.xml) => null
Thread.currentThread().getContextClassLoader().getResourceAsStream(ares/file1.xml) => java.io.BufferedInputStream@5d402eeb

MyClass.class.getClassLoader().getResourceAsStream(/ares/file1.xml) => null
MyClass.class.getClassLoader().getResourceAsStream(ares/file1.xml) => java.io.BufferedInputStream@20c87621

Jenkins

MyClass.class.getResourceAsStream(/ares/file1.xml) => null
MyClass.class.getResourceAsStream(ares/file1.xml) => null

Thread.currentThread().getContextClassLoader().getResourceAsStream(/ares/file1.xml) => null
Thread.currentThread().getContextClassLoader().getResourceAsStream(ares/file1.xml) => null

MyClass.class.getClassLoader().getResourceAsStream(/ares/file1.xml) => null
MyClass.class.getClassLoader().getResourceAsStream(ares/file1.xml) => null

如您所见,Jenkins找不到我的资源。

我想念什么?


阅读 198

收藏
2020-07-25

共1个答案

一尘不染

我终于解决了我的问题。在类路径上,该文件是/ares/file1.xml在我的代码中调用该文件时命名的/ares/file1.XML。您注意到大写了XML吗?

在Windows上,没有区别,因为文件名不区分大小写。在Linux上,失败是因为文件名区分大小写。

最终的想法是,当您在与目标平台不同的平台上进行编码时,首选小写文件名

2020-07-25