这是我的项目的布局:
src/ test/ resources/ ares/ file1.xml file2.xml
这是Jenkins工作区的布局:
my-module/ target/ test-classes/ ares/ file1.xml file2.xml
在eclipse下,测试运行没有任何错误。在詹金斯身上,测试只是失败了。Jenkins无法找到资源。以下是测试执行的一些输出:
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
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找不到我的资源。
我想念什么?
我终于解决了我的问题。在类路径上,该文件是/ares/file1.xml在我的代码中调用该文件时命名的/ares/file1.XML。您注意到大写了XML吗?
/ares/file1.xml
/ares/file1.XML
XML
在Windows上,没有区别,因为文件名不区分大小写。在Linux上,失败是因为文件名区分大小写。
最终的想法是,当您在与目标平台不同的平台上进行编码时,首选小写文件名 。