new icon example borderfactory java url protocols malformedurlexception

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.