【Java web】java.sql.SQLException: Io exception: Message file ‘oracle.net.mesg.Message‘ is missing解决

项目场景:

数据库升级(Oracle11G升级到Oracle19C)后做应用适配,调整数据库链接后启动项目报错,详情如下:

[ERROR] 20221221102804 method:com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2028)
create connection error
java.lang.NullPointerException
        at org.apache.catalina.loader.WebappClassLoaderBase.getResource(WebappClassLoaderBase.java:1674)
        at java.lang.Class.getResource(Class.java:2267)
        at oracle.sql.ConverterArchive.readObj(ConverterArchive.java:380)
        at oracle.sql.converter.CharacterConverterJDBC.getInstance(CharacterConverterJDBC.java:105)
        at oracle.sql.converter.CharacterConverterFactoryJDBC.make(CharacterConverterFactoryJDBC.java:45)
        at oracle.sql.CharacterSetWithConverter.getInstance(CharacterSetWithConverter.java:92)
        at oracle.sql.CharacterSetFactoryThin.make(CharacterSetFactoryThin.java:123)
        at oracle.sql.CharacterSet.make(CharacterSet.java:440)
        at oracle.jdbc.driver.DBConversion.<init>(DBConversion.java:145)
        at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:878)
        at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:268)
        at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:414)
        at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
        at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
        at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
        at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1421)
        at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1477)
        at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:1998)
[ERROR] 20221221102804 method:com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2001)
create connection error, url: jdbc:oracle:thin:@**.**.**.**:1521/BBDB, errorCode 17002, state null
java.sql.SQLException: Io exception: Message file 'oracle.net.mesg.Message' is missing.
        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:255)
        at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387)
        at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:414)
        at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
        at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
        at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
        at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1421)
        at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1477)
        at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:1998)

遂在网络上以:Io exception: Message file ‘oracle.net.mesg.Message’ is missing作为查询关键字进行排错,网上有说是系统ulimit的,有说数据库链接字串不对的,但是我这排查都正常。故排除这两个方面的错误可能。


原因分析及解决:

因为网上求索无果,项目配置文件中数据库链接书写确认也是正确的,暂时找不到头绪;
最终在排查项目依赖lib包时发现了问题,该web项目的依赖包里存在两个驱动ojdbc6和ojdbc14,19C库的连接至少需要ojdbc8,故将以上两个驱动包备份之后引入ojdbc8及依赖包:
ojdbc8-19.3.0.0.jar
olap4j-0.9.8.343.jar
orai18n.jar
加入驱动重启后,项目正常访问,且报错消除。


反思:

马失前蹄,大意了,没有提前检查依赖jar包。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值