繁体   English   中英

在Oracle数据库JVM上运行时的ClassCastException

[英]ClassCastException when running on Oracle Database JVM

我有以下代码:

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

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

当我从Oracle VM外部运行此代码时,它可以正常工作。 但是,当我使用loadjava工具将其加载到Oracale数据库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.jdbc.driver.T4CConnection Oracle的VM外运行时,和oracle.jdbc.driver.T2SConnection在服务器上运行时。

编辑2:[已解决]

该问题是由于jdbc驱动程序类中的冲突引起的。 loadjava意外地将依赖文件从ojdbc5.jar加载到了与Oracle产生loadjava的数据库中。 一旦我放下这些,一切都会正常。

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

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

看来您的数据源连接不是Oracle驱动程序期望的。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM