33
URL u=new URL("telnet://route-server.exodus.net");

此行正在生成:

java.net.MalformedURLException: unknown protocol: telnet

我在使用其他以“news://”开头的 URL 时遇到了类似的问题

这些是从 ODP 中提取的 URL,所以我不明白为什么会出现这种异常..

4

4 回答 4

53

问题

Java 抛出 a 是MalformedURLException因为它找不到URLStreamHandler该协议的 a 。检查构造函数的javadocs以获取详细信息。

概括

由于URL该类有一个openConnection方法,因此 URL 类会检查以确保 Java 知道如何打开正确协议的连接。如果没有 a URLStreamHandlerfor 该协议,Java 拒绝创建 aURL以在您尝试调用时避免失败openConnection

解决方案

URI如果您不打算在 Java 中打开这些协议的连接,您可能应该使用该类。

于 2010-03-09T03:57:10.297 回答
3

听起来您的应用程序中没有为协议“telnet”注册的处理程序。由于 URL 类可用于打开 InputStream 到 URL,因此如果允许您使用它创建对象,则需要为协议注册一个处理程序才能完成这项工作。

有关如何添加处理程序的详细信息,请参阅:http ://docs.oracle.com/javase/7/docs/api/java/net/URLStreamHandlerFactory.html

于 2010-03-09T04:01:10.880 回答
2

简单的答案是它只识别某些协议,而无法识别无限协议的其余部分

于 2010-03-09T05:16:40.387 回答
2

您收到该错误是因为 java 没有用于 telnet的标准协议处理程序。

于 2010-03-09T04:02:20.710 回答