我有以下代码:
OracleDataSource ods = new OracleDataSource();
ods.setURL(thinConnectionString);
OracleConnection conn = (OracleConnection) ods.getConnection();
ArrayDescriptor d = ArrayDescriptor.createDescriptor("MDSYS.RDF_MODELS", conn);
当我从Oracle的VM外部运行此代码时,它可以正常运行。但是,当我使用loadjava
工具将其加载到Oracale Database JVM上然后在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的VM外部运行时获得类型oracle.jdbc.driver.T4CConnection
,在服务器上运行时获得oracle.jdbc.driver.T2SConnection
。
编辑2:[求助]
问题是由于jdbc
驱动程序类中的冲突造成的; loadjava
意外地将ojdbc5.jar
中的依赖文件加载到数据库中,这些文件引起了Oracle的注意。一旦我删除了这些,一切都运行良好。
答案 0 :(得分:1)
OracleDataSource和OracleConnection类来自哪里?您是否尝试使用“标准JDBC类”来获取连接?
Connection conn = DriverManager.getConnection("jdbc:default:connection")
您的数据源连接似乎不是Oracle驱动程序所期望的。
您是否相应地更改了JDBC URL?
其他操作是否也会失败,或者只是ArrayDescriptor?