次のコードがあります。
OracleDataSource ods = new OracleDataSource();
ods.setURL(thinConnectionString);
OracleConnection conn = (OracleConnection) ods.getConnection();
ArrayDescriptor d = ArrayDescriptor.createDescriptor("MDSYS.RDF_MODELS", conn);
このコードを Oracle の VM の外部から実行すると、問題なく動作します。ただし、ツールを使用して Oracle データベース JVM にロードし、loadjava
Oracle 内で実行すると、次の例外が発生します。
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.jdbc.driver.T4CConnection
Oracle の VM の外部でoracle.jdbc.driver.T2SConnection
実行している場合とサーバーで実行している場合の型を取得します。
編集2:[解決済み]
この問題は、jdbc
ドライバー クラスの競合が原因でした。loadjava
誤って依存ファイルをojdbc5.jar
データベースにロードしたため、Oracle の依存ファイルとの競合が発生しました。これらをドロップすると、すべてが正常に機能しました。