2013-05-16 24 views
0

運行時,我有以下代碼:ClassCastException異常Oracle數據庫JVM

OracleDataSource ods = new OracleDataSource(); 
ods.setURL(thinConnectionString); 
OracleConnection conn = (OracleConnection) ods.getConnection(); 

ArrayDescriptor d = ArrayDescriptor.createDescriptor("MDSYS.RDF_MODELS", conn); 

當我運行Oracle的VM超出此代碼它的工作原理沒有問題。然而,當我與loadjava工具加載在Oracale數據庫JVM,然後運行它裏面甲骨文,我得到以下異常:

java.lang.ClassCastException 
    at oracle.jdbc.driver.PhysicalConnection.putDescriptor(PhysicalConnection.java) 
    at oracle.sql.ArrayDescriptor.createDescriptor(ArrayDescriptor.java:156) 
    at oracle.sql.ArrayDescriptor.createDescriptor(ArrayDescriptor.java:123) 
    at oracle.sql.ArrayDescriptor.createDescriptor(ArrayDescriptor.java:106) 
    at oracle.sql.ArrayDescriptor.createDescriptor(ArrayDescriptor.java:73) 
    at XercesTest.Test1(XercesTest.java:46) 
    at XercesTest.Test(XercesTest.java:171) 

是什麼原因造成的問題,以及如何可能解決呢?

編輯:

當我檢查的基礎類型的連接對象,我Oracle的VM外運行時獲取類型oracle.jdbc.driver.T4CConnection,並oracle.jdbc.driver.T2SConnection在服務器上運行時。

編輯2:[解決]

的問題是由於jdbc驅動程序類的衝突; loadjava將意外從屬文件從ojdbc5.jar加載到導致與Oracle相沖突的數據庫。一旦我放棄這些,一切正常。

回答

1

OracleDataSource和OracleConnection類來自哪裏?你是否試圖通過使用「標準JDBC類」來獲得連接?

Connection conn = DriverManager.getConnection("jdbc:default:connection") 

看來你的數據源連接不說,Oracle驅動程序所期待的。

您是否相應地更改了JDBC URL?

其他操作是否也失敗了,還是隻是ArrayDescriptor?

+0

即使使用'DriverManager.getConnection',我也遇到同樣的錯誤。 JDBC URL很好,其他操作正確執行,只是ArrayDescriptor給出了這個錯誤。 (*注意使用jdbc5 *)。 – 0xFF