在没有协议处理程序的情况下实现ClassLoader.getResource(String)

时间:2011-08-22 02:02:39

标签: java classloader

我的类加载器将资源解析为没有url处理程序的源,例如它从数据库获取资源。这当然给ClassLoader.getResource(String)带来了一个问题,它返回一个URL。为了使URL.openConnection()等工作,我需要一个协议处理程序,这会带来额外的问题。如何在不安装自定义Url协议处理程序的情况下将URL映射到我的数据提供程序,这需要我在启动时设置系统属性。 url协议处理程序的问题是它们是静态的,必须在启动时设置,而我的类加载器是动态的,可以来自很多地方。

如果没有协议处理程序,有没有办法优雅地解决这个问题?

1 个答案:

答案 0 :(得分:2)

好吧,如果你自己实现ClassLoader.getResource(String),你可以不使用接受协议处理程序的constructor for URL作为其参数之一吗?

public URL(String protocol,
           String host,
           int port,
           String file,
           URLStreamHandler handler)
    throws MalformedURLException