example - my icon java
¿Por qué la clase de URL de Java no reconoce ciertos protocolos? (4)
Está obteniendo ese error porque java no tiene un controlador de protocolo estándar para telnet.
URL u = nueva URL ("telnet: //route-server.exodus.net");
Esta línea está generando:
java.net.MalformedURLException: protocolo desconocido: telnet
Y encuentro problemas similares con otras URL que comienzan con "noticias: //"
Estas son URL extraídas de ODP, por lo que no entiendo por qué surgen tales excepciones.
La respuesta simple es que solo reconoce ciertos protocolos, y el resto de la infinidad de protocolos no se reconoce.
Parece que no hay un controlador registrado para el protocolo "telnet" en su aplicación. Dado que la clase de URL se puede utilizar para abrir un InputStream en URL, necesita tener un controlador registrado para que el protocolo realice este trabajo si se le permite crear un objeto que lo use.
Para obtener detalles sobre cómo agregar controladores, consulte: http://docs.oracle.com/javase/7/docs/api/java/net/URLStreamHandlerFactory.html
Problema
Java arroja una MalformedURLException
porque no pudo encontrar un URLStreamHandler
para ese protocolo. Verifique los javadocs de los constructores para los detalles.
Resumen:
Dado que la clase URL
tiene un método openConnection
, la clase URL comprueba para asegurarse de que Java sepa cómo abrir una conexión del protocolo correcto. Sin un URLStreamHandler
para ese protocolo, Java se niega a crear una URL
para evitar fallas cuando intentas llamar a openConnection
.
Solución
Probablemente deberías estar usando la clase URI
si no planeas abrir una conexión de esos protocolos en Java.