Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用classloader在不同的项目中获取资源_Java_Classloader_Getresource - Fatal编程技术网

Java 使用classloader在不同的项目中获取资源

Java 使用classloader在不同的项目中获取资源,java,classloader,getresource,Java,Classloader,Getresource,使用ClassLoader#getResource(),我需要访问项目中存在的文件,而不是当前代码所在的文件。如何做到这一点 我正在使用eclipse 目录结构: Root |-project1 | |-package | |-myResourceFile |-project2 |-package |-myCodeFile 根 |-项目1 ||-包装 ||-myResourceFile |-项目2 |-包装 |-霉菌污染 我试图使用mycodile.cla

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

我正在使用eclipse

目录结构:

Root |-project1 | |-package | |-myResourceFile |-project2 |-package |-myCodeFile 根 |-项目1 ||-包装 ||-myResourceFile |-项目2 |-包装 |-霉菌污染 我试图使用mycodile.class.getClassLoader().getResource(“../../project1/package/myResourceFile”)从mycodile获取myResourceFile,但它总是返回null。我不想将project1添加到project2的类路径。虽然加上这一点也不起作用


至于,

尝试从另一个项目中读取这样的文件是一个坏主意,因为它将您与该目录结构绑定在一起。通过使用
getResource()
而不是使用
java.util.File
API,您已经完成了分离项目的第一步,因此您也可以完成整个过程


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

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


这是可行的,但遗憾的是,如果已经存在反向依赖,这不是一个选项。