0

我有以下代码:

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

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

当我从 Oracle 的 VM 外部运行此代码时,它可以正常工作。但是,当我使用工具将它加载到 Oracale 数据库 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 的冲突。一旦我放弃了这些,一切都很好。

4

1 回答 1

1

OracleDataSource 和 OracleConnection 类从何而来?您是否尝试过仅使用“标准 JDBC 类”来获得连接?

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

您的数据源连接似乎不是 Oracle 驱动程序所期望的。

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

其他操作是否也会失败,或者只是 ArrayDescriptor?

于 2013-05-16T16:23:08.223 回答