warum Javas URL-Klasse nicht bestimmte Protokolle erkennen?
-
18-09-2019 - |
Frage
URL u = new URL ( "telnet: //route-server.exodus.net");
Diese Zeile erzeugt:
java.net.MalformedURLException: unbekanntes Protokoll: telnet
Und ich begegnen ähnliche Probleme mit anderen URLs, die mit "news: //"
Diese sind URLs von ODP extrahiert, so dass ich nicht verstehen, warum solche Ausnahmen entstehen ..
Lösung
Problem
Java wirft eine MalformedURLException
, weil es keine URLStreamHandler
für dieses Protokoll finden konnte. Schauen Sie sich die javadocs der Konstrukteure für die Details .
Zusammenfassung:
Da die URL
Klasse eine openConnection
Methode hat, um die URL-Klasse überprüft sicher, dass Java weiß, wie eine Verbindung von dem korrekten Protokoll zu öffnen. Ohne URLStreamHandler
für dieses Protokoll, weigert Java eine URL
erstellen Sie aus Fehlern zu sparen, wenn Sie versuchen, openConnection
zu nennen.
Lösung
Sie sollten wahrscheinlich die URI
Klasse, wenn Sie nicht vorhaben, eine Verbindung dieser Protokolle in Java.
Andere Tipps
Klingt wie es für das Protokoll „telnet“ in Ihrer Anwendung kein Handler ist. Da die URL-Klasse verwendet werden kann, eine Input zu öffnen, um URL muss es einen registrierten Handler hat für das Protokoll, diese Arbeit tun, wenn Sie werden erlaubt sind, ein Objekt zu erstellen, es zu benutzen.
Weitere Informationen darüber, wie Handler hinzuzufügen sehen: http://docs.oracle.com/javase/7/docs/api/java/net/URLStreamHandlerFactory.html
Sie bekommen diese Fehler, weil Java nicht über einen Standard Protokollhandler für Telnet.
Die einfache Antwort ist, dass es nur, dass bestimmte Protokolle erkennen, und der Rest der Unendlichkeit der Protokolle wird nicht erkannt.