我的类加载器将资源解析为没有url处理程序的源,例如它从数据库获取资源。这当然给ClassLoader.getResource(String)带来了一个问题,它返回一个URL。为了使URL.openConnection()等工作,我需要一个协议处理程序,这会带来额外的问题。如何在不安装自定义Url协议处理程序的情况下将URL映射到我的数据提供程序,这需要我在启动时设置系统属性。 url协议处理程序的问题是它们是静态的,必须在启动时设置,而我的类加载器是动态的,可以来自很多地方。
如果没有协议处理程序,有没有办法优雅地解决这个问题?
答案 0 :(得分:2)
好吧,如果你自己实现ClassLoader.getResource(String)
,你可以不使用接受协议处理程序的constructor for URL
作为其参数之一吗?
public URL(String protocol,
String host,
int port,
String file,
URLStreamHandler handler)
throws MalformedURLException