gpt4 book ai didi

java - StAX 解析器在运行时确定

转载 作者:数据小太阳 更新时间:2023-10-29 01:55:21 32 4
gpt4 key购买 nike

我有以下代码:

XMLInputFactory inputFactory = XMLInputFactory.newInstance();
XMLStreamReader xmlStreamReader = inputFactory.createXMLStreamReader(inStream);
this.encoding = xmlStreamReader.getEncoding();

...

此代码在 JBoss 和 Websphere 中都运行良好,但是在特定的 JBoss 中抛出以下异常:

java.lang.ClassCastException: com.ctc.wstx.stax.WstxInputFactory cannot be cast to javax.xml.stream.XMLInputFactory
at javax.xml.stream.XMLInputFactory.newInstance(XMLInputFactory.java:136)
at es.gema.core.shared.dim.data.XFacturaE.detectVersion(XFacturaE.java:115)
at es.gema.core.shared.dim.data.XFacturaE.<init>(XFacturaE.java:67)
at es.gema.core.shared.dim.bc.InvoiceLoader.readXMLInvoice(InvoiceLoader.java:544)
at es.gema.core.shared.dim.bc.InvoiceLoader.loadInvoiceFACE(InvoiceLoader.java:137)
at es.gema.core.expenses.fac.bc.InvoiceServicesBC.execute(InvoiceServicesBC.java:127)
at es.gema.core.expenses.fac.bc.InvoiceServicesBC.execute(InvoiceServicesBC.java:92)

检查 WstxInputFactory 我发现它扩展了 XMLInputFactory2 而不是 XMLInputFactory。

在这种情况下,推荐的方法是什么?在不使用工厂的情况下创建 WstxInputFactory 的实例,或者配置 Java 容器以返回扩展 XMLInputFactory 的解析器?

最佳答案

public abstract class XMLInputFactory2
extends javax.xml.stream.XMLInputFactory

因此 com.ctc.wstx.stax.WstxInputFactory 确实 扩展了 javax.xml.stream.XMLInputFactory 并且因此必须可转换为它.

但是既然你得到了这个异常,你一定遇到了类加载器问题。确保 javax.xml.stream.XMLInputFactory 由同一个类加载器加载。可能 JBoss/JDK 提供了一个,并且您的应用程序在类路径中也有一个 StAX。但很难说到底谁有罪。

关于java - StAX 解析器在运行时确定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27148130/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com