java.lang.ClassCastException:oracle.sql.BLOB无法强制转换为oracle.sql.BLOB

时间:2012-07-10 10:23:59

标签: java oracle blob

我在使用jdbc从oracle DB检索blob对象到java API时遇到问题。 问题是当我使用db中的函数执行Collable语句时返回一个blob字段,这个异常被抛出就行了:

tempBlob = (oracle.sql.BLOB)cstmt.getObject(1);

出现此错误消息:

java.lang.ClassCastException: oracle.sql.BLOB cannot be cast to oracle.sql.BLOB. 

我从数据库获取的对象是oracle.sql.BLOB的实例。 tempBlob 变量是一个对象oracle.sql.BLOB。问题在哪里?

4 个答案:

答案 0 :(得分:4)

两个oracle jar文件可能在您的类路径中。请删除一个jar并重新部署。

答案 1 :(得分:2)

有时一个JAR在应用程序类路径中,另一个在应用程序服务器类路径中(例如:在Tomcat $CATALINA_HOME/lib中)

答案 2 :(得分:0)

不要再次投射:

BLOB tempBlob = (oracle.sql.BLOB)cstmt.getObject(1);

解决方案:

OutputStream outstrm =(rs.getBlob(1)).setBinaryStream(1L); 

答案 3 :(得分:0)

生成碧玉报告时出现此错误。

我替换了class=oracle.jdbc.OracleBlob 与该报告的jrxml文件中的class=java.sql.Blob一起使用。它对我有用。