2

使用 ClassLoader#getResource(),我需要访问项目中存在的文件,而不是我当前代码所在的文件。如何才能做到这一点?

我正在使用日食。

目录结构:

根  
|-项目1  
| |-包装  
| |-我的资源文件  
|-项目2  
  |-包装  
    |-我的代码文件  

我正在尝试使用 myCodeFile.class.getClassLoader().getResource("../../project1/package/myResourceFile") 从 myCodeFile 获取 myResourceFile,但它始终返回 null。我不想将 project1 添加到 project2 的类路径中。虽然添加也不起作用。

带着敬意,

4

2 回答 2

2

尝试从类似的另一个项目中读取文件是一个坏主意,因为它将您与该目录结构完全联系在一起。getResource()您已经通过使用而不是使用API完成了解耦项目的第一步,java.util.File因此您也可以完整地进行。

在 Eclipse 中,您可以将其他项目添加到项目的构建路径(项目属性 -> Java 构建路径 -> 项目)。您现在应该可以阅读其他项目的文件了。

于 2010-10-19T09:46:00.077 回答
1

如果你使用的是 maven,那么你可以在 project2 的 pom.xml 中指定 project1/package 作为资源文件夹。然后您可以使用 Classloader getResource 方法来获取资源

http://maven.apache.org/plugins/maven-resources-plugin/examples/resource-directory.html

于 2014-07-08T21:48:22.910 回答