- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我收到这个错误:
java.lang.ClassCastException: org.apache.jcp.xml.dsig.internal.dom.DOMReference cannot be cast to org.jcp.xml.dsig.internal.dom.DOMReference
也许问题出在servlet的jboss-deployment-structure.xml上:
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.1">
<deployment>
<dependencies>
<module name="javax.api"/>
<module name="org.apache.santuario.xmlsec"/>
<module name="org.apache.xerces" />
<system export="true">
<paths>
<path name="com/sun/org/apache/xerces/internal/dom"/>
</paths>
</system>
</dependencies>
</deployment>
</jboss-deployment-structure>
你有什么线索吗?
提前致谢。
最佳答案
您的问题是不同的 xmlsec 库版本。org.apache.jcp.xml.dsig.internal.dom.DOMReference
位于 xmlsec-1.5.1.jar(JBoss 中的 org.apache.santuario.xmlsec 模块)org.jcp.xml.dsig.internal.dom.DOMReference
位于 xmlsec-1.4.3.jar(依赖于您的 pom.xml)
Jboss 7 使用隔离模块 https://docs.jboss.org/author/display/AS7/Class+Loading+in+AS7它很复杂,我真的不知道它是如何工作的。
但是如果简化的话,当jboss启动时,它加载xmlsec-1.5.1,当启动你的应用程序时,它加载xmlsec-1.4.3。结果,当在 jboss 和 webapp 类加载器之间传递 DOMReference 对象时,你有类转换异常。
您可以通过不同的方式解决您的问题:
org.apache.santuario.xmlsec
模块的依赖。应用程序将使用自己定义的 xmlsec-1.4.3 库xmlsec
,将版本设置为 1.5.1,并将范围设置为 provided
。应用程序将使用带有 xmlsec-1.5.1 的 JBoss 模块xmlsec
并完全排除它,如果你的代码没有 xmlsec
依赖项。应用程序将使用带有 xmlsec-1.5.1 的 JBoss 模块mvn:dependency:tree
命令在这里提供帮助。
关于java - JBoss EAP 7 => ClassCastException : org. apache.jcp.xml.dsig.internal.dom.DOMReference 无法转换为 org.jcp.xml.dsig.internal.dom.DOMReference,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33392945/
我收到这个错误: java.lang.ClassCastException: org.apache.jcp.xml.dsig.internal.dom.DOMReference cannot be c
我是一名优秀的程序员,十分优秀!