![](/img/trans.png)
[英]Gradle build fails with cannot find symbol “org.jcp.xml.dsig.internal.dom.XMLDSigRI”
[英]JBoss EAP 7 => ClassCastException: org.apache.jcp.xml.dsig.internal.dom.DOMReference cannot be cast to org.jcp.xml.dsig.internal.dom.DOMReference
我收到此錯誤:
java.lang.ClassCastException:org.apache.jcp.xml.dsig.internal.dom.DOMReference無法強制轉換為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
。 應用程序將使用JBoss模塊和xmlsec-1.5.1 xmlsec
依賴性,則在pom.xml中找到依賴項xmlsec
並完全排除它。 應用程序將使用JBoss模塊和xmlsec-1.5.1 mvn:dependency:tree
命令在這里有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.