最近在做一个小功能时,从数据库中获取一个CLOB类型的字段,需要在java代码中进行一些处理,但是在取出来Object强制类型转换为 CLOB类型对象时,出现报错:java.lang.ClassCastException: weblogic.jdbc.wrapper.Clob_oracle_sql_CLOB cannot be cast to oracle.sql.CLOB
报错代码如下:
import oracle.sql.CLOB;
....
CLOB c_info = (CLOB)rsMap.get("info");
....
首先根据报错进行分析:
ClassCasrException,类型转换的问题;
weblogic.jdbc.wrapper.Clob_oracle_sql_CLOB,从数据库中获取到的类型为此类型;
oracle.sql.CLOB,强制类型转换的目标类型;
分析可得,这个报错是说,从数据库获取的这个数据类型,不可以转换为我们想要的数据类型。
解决思路:
我先尝试找了weblogic.jdbc.wrapper.Clob_oracle_sql_CLOB这个类,结果是没有在代码的各种引用中找到相关的类,这一步的意义是,可以确认从数据库中取到该类型的操作不是开发人员引用包或做了类型转换导致的;
第二步,根据包名,weblogic是使用的容器,那么考虑是否是因为容器的配置导致的类型问题。经过查资料和对比观察,找到weblogic服务器界面中的一个配置,截图如下:

在weblogic环境中遇到将weblogic.jdbc.wrapper.Clob_oracle_sql_CLOB转换为oracle.sql.CLOB时出现ClassCastException。解决方案包括修改weblogic服务器配置或使用Java反射机制进行类型转换。详细步骤及代码实现文中详述。
最低0.47元/天 解锁文章
4065

被折叠的 条评论
为什么被折叠?



