java 8: ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver
转眼之间, java 11都快要推出了。
而我一直都在 java 7环境下写代码,真的不想升级,不想改变什么,可世界每天都在变化。
最近因为服务端需要SNI,而 java 7 只支持客户端的SNI,只有升级到java 8才能使用服务端的 SNI,我又怕升级到 java 8后,原来的代码受影响,就找了台平时不用的电脑安装了 java 8。
运行了一下代码,果然遇到了问题:ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver
网上搜索了一下相关资料,说是 JDK8删除了JDBC-ODBC桥(从Java 8开始,JDBC-ODBC Bridge将不再包含在JDK中。),然后找到一个解决方案: 从 java 7 提取 jdbc
1. 下载JDK 7或JRE 7。
2. 转到JRE \ lib文件夹并找到rt.jar
3. 将其解压缩(如果您安装了WinRAR或7zip),或者您可以将其重命名为rt.zip并将其解压缩。
4 复制sun \ jdbc和sun \ security \ action文件夹,保留文件夹结构。即你应该有如下的文件夹结构:
Sun --> Security --> Action
Sun --> JDBC
5. 打开一个CMD窗口。转到Sun文件夹的父文件夹。运行命令:jar -cvf jdbc.jar sun
6. 上述命令将创建一个名为jdbc.jar的文件
7. 将JDBC.jar复制到您的JDK8或JRE8 lib文件夹。如果这不起作用,请尝试使用该lib\ext文件夹。
8. 将jdbcodbc.dll从JRE 7安装的JRE \ bin复制到JRE 8安装的JRE \ bin。
9. 重新启动您的JVM。
来源:
https://stackoverflow.com/questions/14229072/removal-of-jdbc-odbc-bridge-in-java-8
http://bigfatball.blogspot.com/2016/03/how-to-enable-jdbc-odbc-bridge-for-jdk-8.html