首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Java中从类路径加载资源的URL

在Java中从类路径加载资源的URL
EN

Stack Overflow用户
提问于 2009-05-14 04:07:39
回答 12查看 315.4K关注 0票数 209

在Java中,您可以使用相同的API加载所有类型的资源,但是使用不同的URL协议:

代码语言:javascript
复制
file:///tmp.txt
http://127.0.0.1:8080/a.properties
jar:http://www.foo.com/bar/baz.jar!/COM/foo/Quux.class

这很好地将资源的实际加载从需要资源的应用程序中分离出来,而且由于URL只是一个字符串,因此资源加载也非常容易配置。

是否有使用当前类加载器加载资源的协议?这与Jar协议类似,不同之处在于我不需要知道资源来自哪个jar文件或类文件夹。

当然,我可以使用Class.getResourceAsStream("a.xml")来做到这一点,但这需要我使用不同的API,因此需要对现有代码进行更改。我希望能够在所有我已经可以为资源指定URL的地方使用它,只需更新一个属性文件。

EN

回答 12

Stack Overflow用户

发布于 2011-01-05 00:50:18

代码语言:javascript
复制
URL url = getClass().getClassLoader().getResource("someresource.xxx");

这应该就行了。

票数 105
EN

Stack Overflow用户

发布于 2012-08-14 22:40:52

我认为这是值得自己回答的--如果你使用Spring,你已经有了这个

代码语言:javascript
复制
Resource firstResource =
    context.getResource("http://www.google.fi/");
Resource anotherResource =
    context.getResource("classpath:some/resource/path/myTemplate.txt");

就像spring documentation中解释的,并在skaffman的评论中指出的。

票数 14
EN

Stack Overflow用户

发布于 2011-07-25 00:44:41

您还可以在启动期间以编程方式设置该属性:

代码语言:javascript
复制
final String key = "java.protocol.handler.pkgs";
String newValue = "org.my.protocols";
if (System.getProperty(key) != null) {
    final String previousValue = System.getProperty(key);
    newValue += "|" + previousValue;
}
System.setProperty(key, newValue);

使用这个类:

代码语言:javascript
复制
package org.my.protocols.classpath;

import java.io.IOException;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLStreamHandler;

public class Handler extends URLStreamHandler {

    @Override
    protected URLConnection openConnection(final URL u) throws IOException {
        final URL resourceUrl = ClassLoader.getSystemClassLoader().getResource(u.getPath());
        return resourceUrl.openConnection();
    }
}

因此,您可以使用侵入性最小的方式来完成此操作。:) java.net.URL将始终使用系统属性中的当前值。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/861500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档