0

次のコードがあります。

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

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

このコードを Oracle の VM の外部から実行すると、問題なく動作します。ただし、ツールを使用して Oracle データベース JVM にロードし、loadjavaOracle 内で実行すると、次の例外が発生します。

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.T4CConnectionOracle の VM の外部でoracle.jdbc.driver.T2SConnection実行している場合とサーバーで実行している場合の型を取得します。

編集2:[解決済み]

この問題は、jdbcドライバー クラスの競合が原因でした。loadjava誤って依存ファイルをojdbc5.jarデータベースにロードしたため、Oracle の依存ファイルとの競合が発生しました。これらをドロップすると、すべてが正常に機能しました。

4

1 に答える 1

1

OracleDataSource および OracleConnection クラスはどこから来たのですか? 「標準の JDBC クラス」を使用するだけで接続を取得しようとしましたか?

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

データ ソース接続は、Oracle ドライバーが期待するものではないようです。

それに応じて JDBC URL を変更しましたか?

他の操作も失敗しますか、それとも ArrayDescriptor だけですか?

于 2013-05-16T16:23:08.223 に答える