- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个可以解码的 JAXB 对象。但是,如果我添加一个用 @XmlAnyElement 注释的 Element[] 字段,则在尝试解码时它会抛出:
java.lang.IllegalStateException: You are running with invalid JAXP api or implementation. JAXP api/implementation of version 1.3.1 (included in JDK6) or higher is required. In case you are using ant, make sure ant 1.7.0 or higher is used - older versions of ant contain JAXP api/impl version 1.2 (in xml-apis.jar). If you want to keep using older ant versions, you have to configure it to use higher the JAXP api/impl versions.
这是从我通过 Eclipse 插件运行的 TestNG 测试运行的。我正在运行 1.6 JDK 并配置 maven 以排除旧版本的 xml-apis jar 但是我似乎无法让它工作。我假设我仍然从某个地方获取不兼容版本的库,但不知道从哪里来。
直接通过 Eclipse 运行我得到:
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)
最佳答案
问题似乎是由旧版本的 Xalan 引起的。自 JDK 5 以来,似乎至少需要 2.7.0 版本。另一个库引入了旧版本,因此我将其排除在 Maven 构建之外,现在一切看起来都不错。
关于java - 解码 JAXB 时无效的 JAXP API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18493541/
想象一个 xml 文件,它使用 noNamespaceSchemaLocation 引用架构。 我想在解析期间使用某种解析技术(例如用于解析架构包含的 ResourceResolver)动态解析 no
有什么区别吗 DocumentBuilder.parse(InputStream) 和 DocumentBuilder.parse(InputSource) ? 我只能发现对于第一种情况,解析器会从流
Transformer 方法转换的签名是 void transform(Source xmlSource,Result outputTarget)throws TransformerException
我正在尝试从 android(java) 中的 xml 文档中检索一个节点。 XPATH config:Manifest/config:Text[@config:name='site
我有一个像这样的 XML: john 20 20 kayla female 20
在使用 Xerces 验证 XML 文档时,它会尝试访问 w3c.org 中的互联网资源。我的应用程序需要离线/在防火墙后面工作,因此抛出异常。 有解决办法吗? ps。此链接提供了一些见解,但没有解决
我有一个 Tomcat 5.5 Web 应用程序,它使用 Apache Commons-Configuration 库在运行时生成 XML 配置文件。 Commons-Configuration 反过
我想提供有关正在使用的 JAXP 实现以及从哪个 JAR 文件加载它的诊断信息。 实现此目的的一种方法是在例如 DocumentBuilderFactory 的实例中创建,然后检查该类的属性: pri
有人知道在底层 POJO 上运行的标准 javax.xml.transform.Source 和 javax.xml.transform.Result 的实现吗? 换句话说,我想使用 XSLT 将一个
我正在动态生成一个需要在运行时针对架构进行验证的文档。我遇到的问题是文档的结构是正确的,但每个级别的元素顺序不正确。有没有办法告诉转换器按照 xsd 文件指定的顺序写出元素?或者我是否必须解析 xsd
我遇到一种情况,我们想要根据文件系统中放置的 XSD 来验证作为字节流保存在内存中的 XML 文档。我们希望避免在 XML 文件中明确提及文件名,而是告诉 XML 解析器使用一个或多个 XSD 文件的
我有一个引用了 dtd 文件的 xml 文件。 ... 我设法用 JAXP 读取这个文件,但前提是 referenced.dtd 与 xml 文件位于同一文件夹中。否则我会收到无法加载 dtd 文
我想通过 DocumentBuilder 中完成的验证提供我自己的消息,而不是来自 XMLMessages.properties 的消息。 现在我看到一个属性 error-reporter需要设置为扩
javax.xml.soap.MessageFactory是否可以重用? IE。 msgFactory = MessageFactory.newInstance(); 我可以缓存 msgFactory
HTML5 规范中是否存在无法使用 JAXP 等 XML 库创建的元素?一个例子是未在 XML 中定义的命名 HTML 实体。还有其他不兼容的地方吗? 最佳答案 JAXP 显然只适用于格式良好的 XM
我在使用 XSLT 转换的 Java 应用程序下工作。我在其中有很多 document() 调用,所以可能有 java.lang.OutOfMemory 异常(我实际上有),因为在每次调用 docum
我想知道在使用Java API for XML处理时,哪些对象可以被重用(在相同或不同的文档中),JAXP: DocumentBuilderFactory DocumentBuilder XPath
JAXP 和 JAXB 有什么区别? 最佳答案 JAXP(用于 XML 处理的 Java API)是一个相当过时的总称,涵盖了 JavaSE 中的各种低级 XML API,例如 DOM、SAX 和 S
我想读取一个可能很大的 XML 文件。为了内存效率和易于处理,我想使用 StAX 和 DOM 的混合,如所述 here . 我的输入如下所示(它是 OSM ) .
(问题已更新,见下文) 在 Java 7 上,我使用 JAXP 来解析 XML。 令人惊讶的是,在 XML 模式验证期间,内置实现 xerces 发出 http 请求以解决某些问题(该请求失败)。 问
我是一名优秀的程序员,十分优秀!