Bonjour à tous !
J'ai un petit problème avec jaxb. J'ai déjà créé mes classes et elles fonctionnent très bien. Le problème vient lorsque j'unmarshall. Voici ma méthode :
Il unmarshall un inputStream d'un fichier XML dont voici le début (il est très bien formé, aucun problème de ce côté là) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 public BlastOutput unmarshall(InputStream is) throws JAXBException { JAXBContext jaxbCtx = JAXBContext.newInstance("org.biojava3.file.blastxml.blastoutputs"); Unmarshaller unmarshaller = jaxbCtx.createUnmarshaller(); return (BlastOutput) unmarshaller.unmarshal(is); //NOI18N }
Et lors de l'unmarshall il fait l'erreur suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <?xml version="1.0"?> <!DOCTYPE BlastOutput PUBLIC "-//NCBI//NCBI BlastOutput/EN" "NCBI_BlastOutput.dtd"> <BlastOutput> ... </BlastOutput>
javax.xml.bind.UnmarshalException
- with linked exception:
[java.io.FileNotFoundException: C:\Documents and Settings\Louise\Mes documents\Downloads\NCBI_BlastOutput.dtd (Le fichier spécifié est introuvable)]
Le fichier DTD est dans le même package que la classe ayant la méthode unmarshall... Alors pourquoi va-t-il chercher ce fichier dans Mes Documents ???
A savoir que tout fonctionne parfaitement quand je mets le fichier DTD dans le répertoire spécifié mais dans ce cas mon programme va avoir un peu de problème à s'exécuter ailleurs.
Une autre remarque et pas des moindres : ce n'est pas moi qui génère le fichier XML mais un service HTTP auquel je ne peux pas toucher.
Merci de votre aide![]()
Partager