我是靠谱客的博主 动听月饼,最近开发中收集的这篇文章主要介绍保存BLOB类型报java.lang.ClassCastException: oracle.sql.BLOB 的解决办法,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
默认tomcat的common/lib下是没有 ojdbc14.jar 这个jar包的,
但是如果要使用jndi方式配置数据库连接池的话,需要手工把ojdbc14.jar放到common/lib下,
当发布的工程里面需要实现向ORACLE数据库里存入一个BLOB字段时,会用到代码:
java.sql.Blob blob = rest.getBlob(1);
oracle.sql.BLOB blob2 = (oracle.sql.BLOB) blob;
outStream = blob2.getBinaryOutputStream();
这里oracle.sql.BLOB 就在 ojdbc14.jar 这个jar包里,
但如果工程里也包含了这个jar包,那么当tomcat启动后,运行到这段代码的时候,会因为程序中有两个ojdbc14.jar 而产出问题(驱动包重复),
报java.lang.ClassCastException: oracle.sql.BLOB 异常。
[b]解决办法:[/b]
1、删除工程中的 ojdbc14.jar, 但程序会编译报错,这时需要引用一个外部包(去tomcat的common/lib下找)
2、在发布的工程里把 ojdbc14.jar 删掉(即去tomcat下的webapps下发布的工程的WEB-INF/lib下去删)。
[b]注:[/b]
如果使用jdbc方式连接数据库, 程序运行时, 连接数据库的是 工程自己的代码,会使用工程里的ojdbc14.jar下找相关类,这时候没问题。
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@123.1.1.2:1521:orc", "xx", "xx");
如果使用jndi方式连接数据库(配置连接池),程序运行时,连接数据库的是 web服务器(tomcat),它会去自己的common/lib下找jar包, 如果这时工程里也就,就重复了。
最后
以上就是动听月饼为你收集整理的保存BLOB类型报java.lang.ClassCastException: oracle.sql.BLOB 的解决办法的全部内容,希望文章能够帮你解决保存BLOB类型报java.lang.ClassCastException: oracle.sql.BLOB 的解决办法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复