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 :

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
}
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
<?xml version="1.0"?>
<!DOCTYPE BlastOutput PUBLIC "-//NCBI//NCBI BlastOutput/EN" "NCBI_BlastOutput.dtd">
<BlastOutput>
...
</BlastOutput>
Et lors de l'unmarshall il fait l'erreur suivante :

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