java - Java-8 中 Xml 解码错误的任何替代解决方案? : “secure-processing org.xml.sax.SAXNotRecognizedException"

标签 java xml-parsing jaxb java-8 jaxb2

注意:此错误已讨论过 here并且还建议了各种解决方案来摆脱与 java-8 默认实现冲突的 jar。

我的问题是该问题的延伸。

为了完整起见,这是当我使用 java-8 运行代码时我也面临的堆栈跟踪:

Feb 29, 2016 12:06:41 PM com.sun.xml.internal.bind.v2.util.XmlFactory createParserFactory
SEVERE: null
org.xml.sax.SAXNotRecognizedException: http://javax.xml.XMLConstants/feature/secure-processing
    at org.apache.xerces.parsers.AbstractSAXParser.setFeature(AbstractSAXParser.java:1487)
    at org.apache.xerces.jaxp.SAXParserImpl.setFeatures(SAXParserImpl.java:145)
    at org.apache.xerces.jaxp.SAXParserImpl.<init>(SAXParserImpl.java:128)
    at org.apache.xerces.jaxp.SAXParserFactoryImpl.newSAXParserImpl(SAXParserFactoryImpl.java:112)
    at org.apache.xerces.jaxp.SAXParserFactoryImpl.setFeature(SAXParserFactoryImpl.java:140)
    at com.sun.xml.internal.bind.v2.util.XmlFactory.createParserFactory(XmlFactory.java:121)
    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.getXMLReader(UnmarshallerImpl.java:139)
    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:276)

为了证明冲突的 jar 确实是问题所在(如前面共享的链接中所述),我确实将相关代码提取到另一个项目中,并使用 java-8 成功运行了代码(即没有任何错误) )与最低数量的 jar 。到目前为止一切顺利。

现在的查询:

就我而言,我的遗留项目使用了大约 2-3 个已知的冲突 jar,这些 jar 出于各种原因使用。然而,有一个新模块使用注释驱动的 jaxb 进行 oxm 处理。

问题是:我无法摆脱那些旧的和冲突的 jar,因为这几乎使 10% 的代码库无法编译。然而,与此同时,我也不希望在新模块中摆脱 jaxb/oxm 实现。

有没有一种方法,我可以通过某种方式告诉 JVM 忽略旧的 jar,并在代码执行通过这个新模块时使用 java-8 附带的默认实现?

最佳答案

另一种方法是使用 StAX 解析器以 XMLStreamReader 的形式获取 XML,然后让 JAXB 对其进行解码。

XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance();
XMLStreamReader xmlStreamReader = xmlInputFactory.createXMLStreamReader(reader);
unmarshaller.unmarshal(xmlStreamReader);

关于java - Java-8 中 Xml 解码错误的任何替代解决方案? : “secure-processing org.xml.sax.SAXNotRecognizedException",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35691668/

相关文章:

java - Nginx 转发到 tomcat 失败

java - 尝试解析 xml 但出现 malformedURLException

sql-server - 通过XML解析SQL中的字符错误

java - JAXB : trouble in unmarshelling field of type List<String> with @XmlAttribute

Java 解码 xml 元素

java - 自定义 namespace JAXB、XML

java - 在 android canvas 中调整路径大小

java - 填充 jasper 报告时的进度

java - BasicDataSource 无法解析为类型

android - 如何使用 XmlObjectParser 和 XmlNamespaceDictionary? (谷歌-http-客户端)