我有以下代码:
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 的冲突。一旦我放弃了这些,一切都很好。