por que classe URL de Java não reconhecem certos protocolos?
-
18-09-2019 - |
Pergunta
URL u = new URL ( "telnet: //route-server.exodus.net");
Esta linha é de geração:
java.net.MalformedURLException: protocolo desconhecido: telnet
E eu encontrar problemas semelhantes com outros URLs que começam com "news: //"
Estes são URLs extraídos de ODP, então eu não entendo por que essas exceções surgem ..
Solução
Edição
Java lança uma MalformedURLException
porque não poderia encontrar um URLStreamHandler
para esse protocolo. Verifique a javadocs dos construtores para os detalhes .
Sumário:
Como a classe URL
tem um método openConnection
, os controlos de classe URL para se certificar de que o Java sabe como abrir uma conexão do protocolo correto. Sem um URLStreamHandler
para esse protocolo, Java recusa-se a criar um URL
para salvá-lo de falha quando você tenta openConnection
chamada.
Solução
Você provavelmente deve estar usando o URI
classe se você não planeja abrir uma conexão desses protocolos em Java.
Outras dicas
Parece que há nenhum manipulador registrado para o protocolo "telnet" na sua aplicação. Como a classe URL pode ser usado para abrir um InputStream para URL ele precisa ter um manipulador registrado para o protocolo para fazer este trabalho se você estiver para ser autorizado a criar um objeto de usá-lo.
Para obter detalhes sobre como adicionar manipuladores ver: http://docs.oracle.com/javase/7/docs/api/java/net/URLStreamHandlerFactory.html
Você está recebendo esse erro porque java não tem um padrão protocolo manipulador para telnet.
A resposta simples é que ele só faz reconhecer certos protocolos, e o restante da infinidade de protocolos não é reconhecido.