项目场景:
该项目为springboot连接mysql,读取数据库中的数据源配置,在代码组装成多数据源进行操作
问题描述
idea本地启动项目访问OK,但部署到远程服务器,连接oracle时报,fail to load driver class oracle.jdbc.driver.OracleDriver in eitherofHIkariConfig class loader or Thread context classloader;
原因分析:
1、先思考是不是oracle驱动没被加载进去,因为用的是springboot自带插件,打出的包是会把第三方jar一起打进BOOT-INF/lib目录下,发现已经有了
2、是不是版本兼容性问题,考虑一下jdk版本和驱动版本是否对应
3、最后还是按照提示去jar中BOOT-INF/lib反编译 ojdbc8-21.5.0.0.jar,查看目录,发现oracle.jdbc.driver.OracleDriver也是存在的,多说一句,oracle.jdbc.driver.OracleDriver 和oracle.jdbc.OracleDriver这里是一样的,该驱动已经做了兼容
解决方案:
提示:最后排查发现,是我的驱动oracle.jdbc.OracleDriver,由于是存在mysql里不知道是不是大小写没区分的原因,取出来竟然是oracle.jdbc.oracleDriver,导致识别不到,也就加载不了,后面我直接在代码里加个枚举类去保证驱动的正确性;
建议:大家遇到这个问题先检查一下驱动名是否正确,空格什么什么的不要有;