2019独角兽企业重金招聘Python工程师标准>>>
公司的测试服务器,无厘头的爆出如下问题:
[com.mchange.v2.c3p0.SQLWarnings.logAndClearWarnings()]:Origination unknown: [10228][11541][3.62.56] 在装入驱动程序时发生了安全性异常。 ERRORCODE=4223, SQLSTATE=null
com.ibm.db2.jcc.am.SqlWarning: Origination unknown: [10228][11541][3.62.56] 在装入驱动程序时发生了安全性异常。 ERRORCODE=4223, SQLSTATE=null
Caused by: java.lang.ClassNotFoundException: sun.io.ByteToCharConverter
但生产的服务器,一样的应用,tomcat, jdk,却没有错。
经查,是DB2jcc.jar这个驱动太旧了,用到sun.io.ByteToCharConverter 这个类仅在jdk1.7以下才有。
解决方案有两个:
1、降级jdk, 如果只是自己用就可以,公司的应用有几千亿人用,这怎么能,被否。
2、找个DB2jcc.jar的兼容版本。
去到测试服务器,tomcat/lib下,输入命令:
java -cp ./db2jcc.jar com.ibm.db2.jcc.DB2Jcc -configuration
知道当前DB2jcc.jar的依赖jdk。经查,依赖是1.6, 那为什么以前不出现,生产不出现这个错呢? 这里先不管。
去maven仓库里拿个最新的版本,放进去,再输入命令,是支持jdk1.8。
查看命令可以参考:http://twistman.buyberry.net/ibm-db2-jdbc-driver-versions/
查看db2jcc版本:https://www-01.ibm.com/support/docview.wss?uid=swg21363866