je suis en train de générer des classes que je peux utiliser des fichiers xsd validateurs trouvés dans:erreur en utilisant JAXB xjc généré des classes de schéma qbxml xsd
C:\Program Files\Intuit\IDN\Common\tools\validator
je lance:
xjc qbxmltypes.xsd qbxml.xsd qbxmlso.xsd qbxmlops.xsd
et l'outil génère le répertoire 'généré' et les fichiers de classe comme prévu. Cependant, ces classes ne semblent pas fonctionner correctement. J'ajoute les classes à mon projet, les reconditionne, et tout compile bien. quand je crée un nouvel objet JAXBContext ainsi:
JAXBContext jaxbContext = JAXBContext.newInstance(ObjectFactory.class);
de façon normale, ce compile très bien, mais je reçois des erreurs d'exécution (beaucoup d'entre eux, en répétant la même ligne) dans System.err laquelle on pouvait lire:
No XmlSchema annotation found for [packagenamehere]
je recherche le chemin du package pour les usages de la XmlSchema, et aucun ne se trouve. JAXB l'exige apparemment à l'exécution.
Est-ce que j'utilise les mauvais fichiers .xsd? devrais-je ajouter l'annotation XmlSchema à la classe ObjectFactory.java? qu'est-ce que je fais mal ici? Je pense que je construis juste les mauvaises classes avec xjc. Quels fichiers .xsd devrais-je compiler?
cela n'a rien à voir avec le problème actuel lol. et vous n'avez pas lu la question à fond. – moonlightcheese
@moonlightcheese - Je relis ta question et je crois que tout ce que j'ai dit s'applique toujours. La spécification de l'indicateur '-p' élimine le besoin de reconditionner vos classes. Et créer un 'JAXBContext' sur le nom du paquet et non sur' ObjectFactory' fonctionnera mieux pour vous. –
merci pour la réponse. J'ai essayé exactement ce que vous avez posté ici, à la lettre. reconstruit les classes à partir du schéma et utilise 'JAXBContext.newInstance (" com.example.qbxml.jaxb ")' qui est le paquet dans lequel résident les classes JAXB. le même problème persiste. J'ai jeté un coup d'oeil à travers ceci: [XmlSchema] (http://jaxb.java.net/nonav/2.2.4/docs/api/javax/xml/bind/annotation/XmlSchema.html) et il semble que JAXB veut que cette annotation soit définie dans un fichier appelé package-info.java. – moonlightcheese