我的意思是,Java如何确定哪些协议可用?我从Eclipse内部运行一些代码,它运行得很好。然后我从Eclipse外部运行相同的代码,然后我得到“未知协议”。 MalformedURLException的。可能它与代码库有什么关系?任何提示都会有所帮助。

谢谢!

有帮助吗?

解决方案

解决协议的工作是由 URLStreamHandler ,按协议以小写形式存储在 URL.handlers 中。反过来,处理程序由 URL.factory 上的> URLStreamHandlerFactory 。也许eclipse正在用它来捣蛋?

URL构造函数使用流处理程序,您可以使用 URL.setURLStreamHandlerFactory

这是一篇关于开发协议处理程序的网络帖子。

其他提示

这里描述了定义协议处理程序的java标准方法: http://java.sun.com/developer/onlineTraining/protocolhandlers/

这依赖于boot(?)类加载器上可用的协议处理程序类。这与OSGi(以及Eclipse)不兼容。 OSGi提供了一个围绕这种机制的包装器,允许bundle / plugins提供协议处理程序。 请参阅: http://www.osgi.org/的Javadoc / r4v41 /组织/ OSGi的/服务/ URL / URLStreamHandlerService.html

Eclipse还提供了自己的协议:bundle-resource(iirc),它肯定不会在Eclipse之外工作。

可能是类路径问题。如果您使用的协议取决于您包含的某个库(jar),然后从eclipse导出JAR,那么您在项目中包含的JAR文件可能无法通过eclipse之外的运行代码找到。您需要jar中的清单文件,该文件将指向所需的库。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top