2010-10-12 8 views

Répondre

1

Pour charger un fichier à partir du chemin de classe (il est, l'espace où youre cours résident, généralement un tas de pots) vous pouvez faire:

InputStream is = this.getClass().getResourceAsStream("my/package/ResourceFile.dtd"); 

Et puis vous pouvez utiliser le flux d'entrée où vous voulez .

Remarque: getResourceAsStream() charge la ressource à l'aide du chargeur de classe qui a chargé la classe. Si vous faites une application, n'importe quelle classe de votre application (et par conséquent chargée par le même classloader avec vos pots) ira bien.

+0

Et comment puis-je dire au JAXB Unmarshaller d'utiliser cet InputStream? –

+0

Ne sait pas à propos de JAXB. Il y a un Q & A sur la désactivation de la vérification DTD. Peut-être que cela aide. http://stackoverflow.com/questions/9909465/how-to-disable-dtd-fetching-using-jaxb2-0 – helios

1

Il n'existe pas de façon standard de fournir un cache local (CATALOG si je me souviens bien) des DTD. Par conséquent, vous devrez rechercher l'analyseur qui utilisera les copies locales et utiliser son API de configuration non standard pour lui faire part de ces copies locales afin d'éviter le déclenchement sur le réseau.

Utilisez la méthode getResourceAsStream() pour sélectionner les entrées du chemin de classe.

Questions connexes