URL u=new URL ("telnet://направляют-server.exodus.net");
Эта строка генерирует:
java.net. MalformedURLException: неизвестный протокол: telnet
И я встречаюсь с подобными проблемами с другими URL, которые начинаются "news://"
Это URL, извлеченные из ODP, таким образом, я не понимаю, почему такие исключения возникают..
Проблема
Java выдает исключение MalformedURLException
, потому что не может найти URLStreamHandler
для этого протокола. За подробностями обращайтесь к javadocs конструкторов.
Резюме:
Поскольку класс URL
имеет метод openConnection
, класс URL проверяет, знает ли Java, как открыть соединение с правильным протоколом. Без URLStreamHandler
для этого протокола Java отказывается создавать URL
, чтобы спасти вас от сбоя при попытке вызвать openConnection
.
Решение
Вам, вероятно, следует использовать класс URI
, если вы не планируете открывать соединение этих протоколов в Java.
Похоже, в вашем приложении нет зарегистрированного обработчика протокола "telnet". Поскольку класс URL-адреса может использоваться для открытия InputStream для URL-адреса, он должен иметь зарегистрированный обработчик для протокола для выполнения этой работы, если вам разрешено создавать объект с его помощью.
Подробнее о том, как добавлять обработчики, см .: http://docs.oracle.com/javase/7/docs/api/java/net/URLStreamHandlerFactory.html
Простой ответ заключается в том, что он только распознает определенные протоколы, а остальная часть бесконечности протоколов не распознается.