Non valide API JAXP quand désordonnancement JAXB
J'ai un JAXB objet je peux unmarshal amende. Cependant, si j'ajoute un Élément de[] champ annotée avec @XmlAnyElement, lors de la tentative de unmarshal il lance:
java.lang.IllegalStateException: Vous êtes en cours d'exécution avec invalide api JAXP ou la mise en œuvre. Api JAXP/mise en œuvre de la version 1.3.1 (inclus dans le JDK6) ou supérieur est requis. Dans le cas où vous êtes en utilisant ant, assurez-vous ant 1.7.0 ou plus est utilisé - dans les anciennes versions de fourmi contiennent de l'api JAXP/impl version 1.2 (en xml-apis.jar). Si vous souhaitez continuer à utiliser les anciennes versions ant, vous devez le configurer pour une utilisation plus élevée de l'api JAXP/impl versions.
C'est exécutée à partir d'un TestNG test que je suis en cours d'exécution via le plugin Eclipse. Je suis en cours d'exécution avec le JDK 1.6 et configuré maven pour exclure les anciennes versions de xml api jar cependant je n'arrive pas à le faire fonctionner. Je suppose que je suis encore ramasser des versions incompatibles de la bibliothèque quelque part, mais ne savez pas où partir.
À l'aide d'Eclipse directement-je obtenir:
29-Aug-2013 10:04:08 com.sun.xml.bind.v2.util.XmlFactory createTransformerFactory
SEVERE: null
java.lang.AbstractMethodError: javax.xml.transform.TransformerFactory.setFeature(Ljava/lang/String;Z)V
at com.sun.xml.bind.v2.util.XmlFactory.createTransformerFactory(XmlFactory.java:155)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.createTransformerHandler(JAXBContextImpl.java:747)
at com.sun.xml.bind.v2.runtime.unmarshaller.DomLoader$State.<init>(DomLoader.java:75)
at com.sun.xml.bind.v2.runtime.unmarshaller.DomLoader.startElement(DomLoader.java:118)
at com.sun.xml.bind.v2.runtime.unmarshaller.ProxyLoader.startElement(ProxyLoader.java:60)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext._startElement(UnmarshallingContext.java:501)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.startElement(UnmarshallingContext.java:480)
at com.sun.xml.bind.v2.runtime.unmarshaller.SAXConnector.startElement(SAXConnector.java:150)
at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source)
at org.apache.xerces.parsers.AbstractXMLDocumentParser.emptyElement(Unknown Source)
at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:218)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:190)
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:137)
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:184)
at com.gtspt.vrs.parser.AbstractParserTest.unmarshal(AbstractParserTest.java:33)
at com.gtspt.vrs.parser.AbstractParserTest.testParser(AbstractParserTest.java:26)
at com.gtspt.vrs.parser.TestResultsParser.testParser(TestResultsParser.java:17)
at com.gtspt.vrs.parser.Test.main(Test.java:16)
- Si vous exécutez l'extérieur d'un TestNG environnement n'est que tout fonctionne correctement?
- Ajouté trace de la pile à modifier.
Vous devez vous connecter pour publier un commentaire.
On dirait que le problème est dû à une ancienne version de Xalan. Il semble un minimum de la version 2.7.0 est nécessaire depuis le JDK 5. Une autre bibliothèque tirait dans une ancienne version j'ai donc exclu que de l'Maven build et tout semble bon maintenant.
Dans mon cas, il a été causé par une vieille version de
xercesImpl
. La dépendance ci-dessous, il fixeEn plus de soutien et pour être plus précis, si vous exécutez un maven ou JPA projet, vous devriez être en mesure de faire un clic droit sur la dépendance répertoire, ajouter la dépendance et à la recherche de xalan. Ajouter une version 2.7.0 et sous la xalan:xalan liste.
J'ai couru dans la même erreur avec la même formule, mais il s'est avéré être un tout autre problème de problème de dépendance, comme l'erreur suggéré. Donc, je vais partager ma rencontre ici au cas où quelqu'un là-bas pourraient également en profiter.
J'avais quelque chose comme ça dans mon code:
Et dans la classe Rectangle, j'ai eu une faute de frappe dans le nom de l'élément spécifié pour le @XmlRootElement - "retangle", ne correspondant pas le nom "rectangle" à l'intérieur de l' @XmlElementRef dans le ImageObject classe:
Donc, attention à cela si vous utilisez le @XmlElementRef annotation.
J'ai résolu ce problème en supprimant xalan de mon projet. Je suis à l'aide de JDK7 dans mon projet
J'ai résolu ce problème en utilisant le code suivant. Je suis à l'aide de JDK8 dans mon projet