Frage

Ich meine, wie funktioniert Java entscheiden, welche Protokolle zur Verfügung stehen? Ich betreibe einen Code aus in Eclipse, und es funktioniert gut. Dann laufe ich den gleichen Code von außen Eclipse und ich „unbekanntes Protokoll“ MalformedURLException. Wahrscheinlich hat es mit der Code-Basis, oder etwas zu tun? Für Hinweise wäre hilfreich.

Danke!

War es hilfreich?

Lösung

Die Arbeit des Protokolls der Lösung wird durch die URLStreamHandler , die in URL.handlers von Protokoll in Klein gespeichert sind. Der Handler, der wiederum durch die erstellten URLStreamHandlerFactory bei URL.factory. Vielleicht mit dem Eclipse ist nachäffen?

Einige der URL Konstrukteurs-Stream-Handler zu nehmen und Ihnen die Fabrik mit URL.setURLStreamHandlerFactory .

Hier ist eine Web-Post über Entwicklung Protokollhandler .

Andere Tipps

Die Java-Standardmethode Protokollhandler zu definieren ist hier beschrieben: http://java.sun.com/developer/onlineTraining/protocolhandlers/

Dies beruht auf der Protokoll-Handler-Klasse auf dem Boot zur Verfügung steht (?) Classloader. Das funktioniert nicht gut mit OSGi (und damit Eclipse). OSGi stellt eine Hülle um diesen Mechanismus Bündel / Plugins zu ermöglichen, Protokoll-Handler beizutragen. Siehe: http://www.osgi.org/ javadoc / r4v41 / org / OSGi / service / url / URLStreamHandlerService.html

Eclipse-stellt auch ein eigenes Protokoll. Bündel-Ressource (IIRC), die definitiv nicht außerhalb von Eclipse arbeitet

Wahrscheinlich ein Classpath Problem. Wenn Sie ein Protokoll verwenden, das auf einiger Bibliothek (jar) ab, die Sie enthielten, und exportierten dann eine JAR von Eclipse werden die JAR-Dateien, die Sie in Ihrem Projekt enthalten wahrscheinlich nicht außerhalb von Eclipse durch den laufenden Code gefunden werden. Sie benötigen eine Manifest-Datei in Ihrem Glas, die die Bibliotheken zeigen wird, die benötigt werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top