有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何从一个类路径中的不同JAR加载一个相同的命名资源?

假设有一个jar main.jar,它依赖于另外两个jar——dep1.jardep2.jar。这两个依赖项都位于清单中的类路径中。MF of main.jar。每个依赖JAR内部都有一个目录foo,其中有一个文件bar.txt

dep1.jar
|
\--foo/
   |
   \--bar.txt

dep2.jar
|
\--foo/
   |
   \--bar.txt

下面是main.jar的一个主要类:

public class App
{
    public static void main( String[] args ) {
        ApplicationContext ctx = new StaticApplicationContext();
        Resource barResource = ctx.getResource("classpath:foo/bar.txt");
    }
}

将加载两个bar.txt文件中的哪一个?有没有办法在资源URL中指定加载文件的jar


共 (1) 个答案

  1. # 1 楼答案

    规范中说,类路径上的第一个类/资源被获取(AFAIK)

    然而,我会尝试:

    Dep1Class.class.getResource("/foo/bar.txt");
    Dep2Class.class.getResource("/foo/bar.txt");
    

    作为班级。getResource works不能从另一个jar获取资源,而不是系统类加载器

    如果运气好的话,您不需要使用ClassLoader和另一个类装入器load dep2。罐子