近期对系统做了一些改造,其中使用了BLOB这个字段,从ResultSet中取出强转成oracle自己的BLOB时报了ClassNotFound异常,后来调试了很久,把本地开发引用和Tomcat下的common/lib下都放了同样的ojdbc6.jar还是不行
现象就是同样都是BLOB类,类的全名都一模一样,但就是不能强转
最后没办法,到源码里面把两个BLOB的classloader打印了出来,果然,一个是APPLoader,一个是什么SystemLoader,从ResultSet中获取的是APP加载的BLOB,而强转后的BLOB是System加载的BLOB,原来它们的类加载器不一致
解决办法就是把本地开发引用的ojdbc6.jar删掉即可,为什么不删tomcat下的呢?这是因为web系统采用了JNDI方式链接数据源,依赖了Tomcat的数据源实现,所以必须在tomcat下放一个驱动包