Question

Je veux dire, comment Java décide-t-il des protocoles disponibles? Je lance du code depuis Eclipse et cela fonctionne très bien. Ensuite, je lance le même code depuis l’extérieur d’Eclipse, et j’obtiens le "protocole inconnu". MalformedURLException. Cela a probablement à voir avec la base de code, ou quelque chose comme ça? Toute suggestion serait utile.

Merci!

Était-ce utile?

La solution

Le travail de résolution du protocole est effectué par URLStreamHandler , qui sont stockés dans URL.handlers par protocole en minuscule. Le gestionnaire, à son tour, est créé par le URLStreamHandlerFactory dans URL.factory . Peut-être qu’éclipse singe avec ça?

Certains des Les constructeurs d'URL prennent des gestionnaires de flux et vous pouvez définir la fabrique avec URL.setURLStreamHandlerFactory .

Voici un article Web sur le développement de gestionnaires de protocoles .

Autres conseils

La méthode standard Java pour définir les gestionnaires de protocole est décrite ici: http://java.sun.com/developer/onlineTraining/protocolhandlers/

Cela dépend de la classe de gestionnaire de protocole disponible sur le chargeur de classe boot (?). Cela ne fonctionne pas bien avec OSGi (et donc Eclipse). OSGi fournit un wrapper autour de ce mécanisme pour permettre aux bundles / plugins de contribuer aux gestionnaires de protocole. Voir: http://www.osgi.org/ javadoc / r4v41 / org / osgi / service / url / URLStreamHandlerService.html

Eclipse fournit également son propre protocole: bundle-resource (iirc) qui ne fonctionnera certainement pas en dehors d’Eclipse.

Probablement un problème de classpath. Si vous utilisez un protocole qui dépend de la bibliothèque (jar) que vous avez incluse, puis que vous exportez un fichier JAR à partir d’éclipse, les fichiers JAR que vous avez inclus dans votre projet ne sont probablement pas trouvés par le code en cours d’exécution en dehors d’éclipse. Vous avez besoin d’un fichier manifeste dans votre fichier JAR qui pointe vers les bibliothèques nécessaires.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top