被调用jar中的ClassLoader getResource()使用来自调用者的资源

时间:2016-06-14 23:37:35

标签: java jar classloader

我有两个java项目。项目B是一个实用程序,旨在打包为jar并由其他项目调用。项目A需要调用项目B.但是,当项目B调用ClassLoader getResource()时,它正在从项目A加载资源。如何从项目B加载它? 看起来这应该很容易,所以我觉得我一定会错过一些简单的东西。 以下代码位于项目B中,从项目A调用.path / to / file.txt位于项目B的resources文件夹中。

System.out.println(Paths.get(classLoader.getResource("path/to/file.txt").toURI()).toString());

Output: C:\Users\....\projectA\target\test-classes

1 个答案:

答案 0 :(得分:0)

通常,您实现此目的的方法是在path/to/file.txt中包含B.jar作为资源。

作为示例,在您的Maven项目中包含Guava 19.0作为编译时依赖项(看起来您正在使用Maven)。以下代码适用于我:

// pom.properties is bundled in guava-19.0.jar.
URL resource = Example.class.getResource("/META-INF/maven/com.google.guava/guava/pom.properties");
System.out.println(resource.toString());