使用类加载器在不同的项目中获取资源

时间:2010-10-19 09:31:26

标签: java classloader getresource

使用ClassLoader #getResource(),我需要访问项目中存在的文件,而不是我当前代码所在的项目。怎么办呢?

我正在使用eclipse。

目录结构:

Root  
|-project1  
| |-package  
|   |-myResourceFile  
|-project2  
  |-package  
    |-myCodeFile  

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

关于,

2 个答案:

答案 0 :(得分:1)

尝试从其他项目中读取文件是一个坏主意,因为它会将您与该目录结构完全联系起来。您已经使用getResource()而不是使用java.util.File API完成了解耦项目的第一步,因此您也可以采用完整的方式。

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

答案 1 :(得分:1)

如果您使用的是maven,则可以将project1 / package指定为project2的pom.xml中的资源文件夹。您可以使用Classloader getResource方法获取资源

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