почему класс URL Java не распознает определенные протоколы? - PullRequest
27 голосов
/ 09 марта 2010

URL u = новый URL ("telnet: //route-server.exodus.net");

Эта строка генерирует:

java.net.MalformedURLException: неизвестный протокол: telnet

И я сталкиваюсь с подобными проблемами с другими URL, которые начинаются с "news: //"

Это URL-адреса, извлеченные из ODP, поэтому я не понимаю, почему возникают такие исключения.

Ответы [ 4 ]

44 голосов
/ 09 марта 2010

Проблема

Java выдает MalformedURLException, поскольку не может найти URLStreamHandler для этого протокола.Проверьте javadocs конструкторов для деталей.

Резюме:

Поскольку класс URL имеет openConnectionметод, класс URL проверяет, чтобы убедиться, что Java знает, как открыть соединение с правильным протоколом.Без URLStreamHandler для этого протокола Java отказывается создавать URL, чтобы уберечь вас от сбоя при попытке вызвать openConnection.

Решение

Возможно, вам следует использовать класс URI, если вы не планируете открывать соединение этих протоколов в Java.

4 голосов
/ 09 марта 2010

Похоже, в вашем приложении нет зарегистрированного обработчика для протокола "telnet". Так как класс URL можно использовать для открытия InputStream to URL, ему необходим зарегистрированный обработчик для протокола, чтобы выполнить эту работу, если вам разрешено создавать объект с его использованием.

Подробнее о том, как добавить обработчики, см .: http://docs.oracle.com/javase/7/docs/api/java/net/URLStreamHandlerFactory.html

3 голосов
/ 09 марта 2010

Простой ответ заключается в том, что только распознает определенные протоколы, а остальная часть бесконечности протоколов не распознается.

3 голосов
/ 09 марта 2010

Вы получаете эту ошибку, потому что у java нет стандартного обработчика протокола для telnet.

...