需要一些问题的帮助。在我的一个java类中,我需要访问一个文件。该文件必须与所讨论的java类位于相同的位置(在源代码中)。以下是代码的摘录。
String fileName = "myfile.myext"
resource = "./" + fileName
String fileContent = IOUtils.toString(clazz.getResourceAsStream(resource));
这在Eclipse的开发框中可以正常工作。但是,当我把它放在Jenkins(这是我的CI服务器)上的那一刻它不起作用。我检查了以下内容
可能相关的一些事情
净网,詹金斯我不能让测试用例从代码库中读取文件。在Eclipse中,我可以。
之前有人面对/解决了这个问题吗?
答案 0 :(得分:1)
这里的问题是,当您在Eclipse中运行程序时,代码从包含代码的目录运行,而Jenkins从其他目录运行它。因此,./
不引用包含代码的目录。
您可以使用getResourceAsStream
方法从类路径中的位置加载资源,并且显然也会处理JAR捆绑。这个article on resource loading应该有所解释。
但是,此方法应该只用于用户永远不需要与之交互的文件。例如,如果要存储用户编辑的配置文件,则应将其放在其他位置,例如Application Data directory。