在Java11下使用CXF类强制转换异常

在Java11下使用CXF类强制转换异常,java,cxf,Java,Cxf,我正在将一个在Java8下运行的应用程序转换为Java11。它使用ApacheCXF库提供带有附件的web服务。由于企业库已经从11个JRE中删除,我将所需的库添加到类路径(SAAJ、JAXB等)。现在,当它运行时,我得到以下异常 java.lang.ClassCastException: class com.sun.org.apache.xerces.internal.dom.ElementNSImpl cannot be cast to class javax.xml.soap.SO

我正在将一个在Java8下运行的应用程序转换为Java11。它使用ApacheCXF库提供带有附件的web服务。由于企业库已经从11个JRE中删除,我将所需的库添加到类路径(SAAJ、JAXB等)。现在,当它运行时,我得到以下异常

    java.lang.ClassCastException: class com.sun.org.apache.xerces.internal.dom.ElementNSImpl cannot be cast to class javax.xml.soap.SOAPElement (com.sun.org.apache.xerces.internal.dom.ElementNSImpl is in module java.xml of loader 'bootstrap'; javax.xml.soap.SOAPElement is in unnamed module of loader 'app')
at org.apache.cxf.binding.soap.saaj.SAAJStreamWriter.adjustOverlaidNode(SAAJStreamWriter.java:64)
at org.apache.cxf.staxutils.OverlayW3CDOMStreamWriter.writeStartElement(OverlayW3CDOMStreamWriter.java:132)
at org.apache.cxf.binding.soap.interceptor.SoapOutInterceptor.writeSoapEnvelopeStart(SoapOutInterceptor.java:122)
at org.apache.cxf.binding.soap.interceptor.SoapOutInterceptor.handleMessage(SoapOutInterceptor.java:81)
at org.apache.cxf.binding.soap.interceptor.SoapOutInterceptor.handleMessage(SoapOutInterceptor.java:61)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:271)
at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:530)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:463)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:366)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:319)
at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96)
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:133)
at com.sun.proxy.$Proxy261.dpSrequestToken(Unknown Source)

有人知道为什么默认消息构造会创建一个类的实例,而该类没有实现所需的SOAPElement接口吗?

请等待CXF 3.3.x使用Java 11。社区目前正在进行这方面的工作。您可以使用JIRA跟踪状态