gpt4 book ai didi

java - JBoss EAP 7 => ClassCastException : org. apache.jcp.xml.dsig.internal.dom.DOMReference 无法转换为 org.jcp.xml.dsig.internal.dom.DOMReference

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:41:06 26 4
gpt4 key购买 nike

我收到这个错误:

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 对象时,你有类转换异常。

您可以通过不同的方式解决您的问题:

  • 移除 jboss-deployment-structure.xml 中 org.apache.santuario.xmlsec 模块的依赖。应用程序将使用自己定义的 xmlsec-1.4.3 库
  • 在 pom.xml 中找到依赖项 xmlsec,将版本设置为 1.5.1,并将范围设置为 provided。应用程序将使用带有 xmlsec-1.5.1 的 JBoss 模块
  • 在 pom.xml 中找到依赖项 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/

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