java - getResource ("/some.jar") 返回 null,尽管 "some.jar"存在于 getURLs() 中

标签 java url classpath classloader getresource

几个小时后我放弃调试以下内容:

这有效:

URL[] urls = ((URLClassLoader) MyClass.class.getClassLoader()).getURLs();
    URL myURL = null;
    for (URL url : urls) {
        if (url.getPath().endsWith("some.jar")) {
            myURL = url;
    }   
}
System.out.println(myURL);

返回

file:/C:/Users/Me/.m2/repository/path/to/some.jar

但是,以下所有内容都会返回 null:

MyClass.class.getClassLoader()).getResource("/some.jar");
MyClass.class.getClassLoader()).getResource("some.jar");
MyClass.class.getClassLoader()).getResource("/C:/Users/Me/.m2/repository/path/to/some.jar");
MyClass.class.getClassLoader()).getResource("/path/to/some.jar");

如您所见,如果可能的话,我希望通过不绝对地址来获取用户的 Maven 存储库的 jar。 jar 位于类路径中,如 getURLs()
所示 但是我到底该如何在 getResource() 中解决它才能获取它呢?

感谢任何帮助!

最佳答案

URLClassLoader.getURLs() 返回类路径中目录和 JAR 的 URL。 ClassLoader.getResource(String) 正在类路径内查找资源。因此,除非类路径中的 JAR/目录之一包含 some.jar,否则预计会失败。

换句话说,如果some.jar包含pkg/thingy.png,则getResource("pkg/thingy.png")会成功的。

另请注意,getResource(String) 返回资源的 URL...您在 myURL 中已有的 URL。

关于java - getResource ("/some.jar") 返回 null,尽管 "some.jar"存在于 getURLs() 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9911686/

相关文章:

java - 为个人添加属性并将它们全部插入我的 file.owl

java - 使用显式类型初始化 ImmutableMap?

java - 致命[主要] org.apache.hadoop.mapreduce.v2.app.MRAppMaster:启动MRAppMaster java.lang.NoClassDefFoundError时出错

Java、Classpath、Classloading => 同一个 jar/项目的多个版本

java - 如何在ant文件中设置类路径来执行Java程序并包含外部jar?

java - AsyncTask 和自定义监听器

java - 如何获取新的ArrayList数据?

php - 如何检测 URL 中特定页面的存在?

url - asp.net 自定义 HttpHandler 和 URL 路由

javascript - Node 遗留 url.parse 已弃用,用什么代替?