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

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

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

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

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