为什么java的URL类不能识别某些协议?
URL u =新URL(“telnet://route-server.exodus.net”);
这条线正在产生:
java.net.MalformedURLException:未知协议:telnet
我遇到与以“news://”开头的其他url类似的问题
这些是从ODP中提取的URL,所以我不明白为什么会出现这样的例外情况。
问题
Java抛出MalformedURLException
因为它找不到该协议的URLStreamHandler
。 检查构造函数的javadocs以获取详细信息。
概要:
由于URL
类具有openConnection
方法,因此URL类会进行检查以确保Java知道如何打开正确协议的连接。 如果没有该协议的URLStreamHandler
,Java会在您尝试调用openConnection
时拒绝创建URL
以避免失败。
解
如果您不打算在Java中打开这些协议的连接,则应该使用URI
类。
听起来你的应用程序中没有协议“telnet”的注册处理程序。 由于URL类可用于打开InputStream到URL,因此如果允许使用它创建对象,则需要为协议执行此注册处理程序。
有关如何添加处理程序的详细信息,请参阅: http : //docs.oracle.com/javase/7/docs/api/java/net/URLStreamHandlerFactory.html
您收到该错误是因为java没有telnet的标准协议处理程序 。
简单的答案是它只能识别某些协议,并且无法识别无限协议的其余部分。