fail to load driver class oracle.jdbc.driver.OracleDriver in eitherofHIkariConfig class loader

项目场景:

该项目为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目录下,发现已经有了

fail to load driver class oracle.jdbc.driver.OracleDriver in eitherofHIkariConfig class loader_第1张图片
fail to load driver class oracle.jdbc.driver.OracleDriver in eitherofHIkariConfig class loader_第2张图片
fail to load driver class oracle.jdbc.driver.OracleDriver in eitherofHIkariConfig class loader_第3张图片

2、是不是版本兼容性问题,考虑一下jdk版本和驱动版本是否对应

3、最后还是按照提示去jar中BOOT-INF/lib反编译 ojdbc8-21.5.0.0.jar,查看目录,发现oracle.jdbc.driver.OracleDriver也是存在的,多说一句,oracle.jdbc.driver.OracleDriver 和oracle.jdbc.OracleDriver这里是一样的,该驱动已经做了兼容

fail to load driver class oracle.jdbc.driver.OracleDriver in eitherofHIkariConfig class loader_第4张图片
fail to load driver class oracle.jdbc.driver.OracleDriver in eitherofHIkariConfig class loader_第5张图片


解决方案:

提示:最后排查发现,是我的驱动oracle.jdbc.OracleDriver,由于是存在mysql里不知道是不是大小写没区分的原因,取出来竟然是oracle.jdbc.oracleDriver,导致识别不到,也就加载不了,后面我直接在代码里加个枚举类去保证驱动的正确性;

建议:大家遇到这个问题先检查一下驱动名是否正确,空格什么什么的不要有;

你可能感兴趣的:(日常采坑,oracle,java,数据库)