亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

無法將 ClassA 轉換為 ClassA:java.lang.ClassCastException

無法將 ClassA 轉換為 ClassA:java.lang.ClassCastException

慕斯王 2023-04-26 14:43:18
我有 Ejb webservice 項目和其他 web 項目,我通過 EAR 在 Wildfly 10.x 服務器上部署,war 項目和 Ejb 項目需要 oracle.sql.OPAQUE 通過 xdb jar 創建 xml 數據,對于 oracle.sql。不透明我在項目構建路徑中添加了 ojdbc6,并將其添加到部署描述符中,我還在 wildfly 模塊中添加了 ojdbc6 驅動程序,用于 jdbc 連接。在部署項目時,沒有錯誤,而在運行頁面時,我得到了oracle.sql.OPAQUE cannot be cast to oracle.sql.OPAQUE: java.lang.ClassCastException: oracle.sql.OPAQUE cannot be cast to oracle.sql.OPAQUE類加載器似乎已經加載了 oracle.sql.OPAQUE 兩次,因此這是一個問題我曾嘗試從部署描述符中刪除 ojdbc6,但隨后會在 EAR 部署本身上引發 noclassdefounderror。如果有人可以告訴我如何在 wildfly 服務器端解決這個類加載器問題,那將會很有幫助?;驈娭扑鼜奶囟ǚ矫媸褂迷擃?。非常感謝,請提供任何可能的鏈接,我將不勝感激。10:24:39,460 INFO  [icrCommon] (default task-8) ++++ QueryRequest queryXMLAccess() - ContextKey:256574422:190508:210142844 TypeId: 0 Channel: CAP10:24:40,521 SEVERE [com.sun.xml.ws.server.sei.EndpointMethodHandler] (default task-8) oracle.sql.OPAQUE cannot be cast to oracle.sql.OPAQUE: java.lang.ClassCastException: oracle.sql.OPAQUE cannot be cast to oracle.sql.OPAQUE    at com.att.icr.dataAccess.ICRDatabaseAccess.IcrActiveHistoryXMLQuery(ICRDatabaseAccess.java:2093)    at com.att.icr.icrservices.datamapping.ICRDataAccess.queryXMLAccess(ICRDataAccess.java:1161)    at com.att.icr.icrservices.ICRSoapHttpBindingImpl.queryICR(ICRSoapHttpBindingImpl.java:307)    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
查看完整描述

1 回答

?
MYYA

TA貢獻1868條經驗 獲得超4個贊

如您所知,Wildfly 具有模塊化的類加載結構。每個模塊都有自己的類加載器。類類型相同是不夠的。在類加載器中必須相同。在JBoss 文檔中:


WildFly 的類加載基于必須定義對其他模塊的顯式依賴項的模塊。WildFly 中的部署也是模塊,并且無法訪問在應用程序服務器中的 jar 中定義的類,除非定義了對這些類的顯式依賴。


您可以創建自定義模塊并在此模塊中提供 .ears 加載 jar。在$JBOSS_HOME/modules/com/example/main/中創建module.xml文件,將要加載的 jar 名稱寫入module.xml。


<module xmlns="urn:jboss:module:1.5" name="com.example">


<resources>

? ? <resource-root path="sample.jar"/>

</resources>

將jar復制到module.xml所在路徑。


+-----com

? ? ?+-----example

? ? ? ? ? ?+-----main

? ? ? ? ? ? ? ? ?module.xml

? ? ? ? ? ? ? ? ?sample.jar

在 .ears 中創建部署描述符(jboss-deployment-structure.xml)并將您的模塊添加到此文件中。


<?xml version="1.0" encoding="UTF-8"?>

<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<deployment>

? ? <dependencies>

? ? ? ? <module name="com.example" export="true" />

? ? </dependencies>

</deployment>

</jboss-deployment-structure>

所以,Jar 的類加載器是相同的。



查看完整回答
反對 回復 2023-04-26
  • 1 回答
  • 0 關注
  • 134 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號