• 关于java.lang.ClassNotFoundException: org.git.mm.mysql.Driver的解决办法


    用jdbc链接数据库MySql时出现如下异常:

    java.lang.ClassNotFoundException: org.git.mm.mysql.Driver
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at com.panguso.test.ps.PSTestStandardizedProducts.DataBaseOperation.getDBConnection(DataBaseOperation.java:84)
    at com.panguso.test.ps.PSTestStandardizedProducts.DataBaseOperation.getValuefromDB(DataBaseOperation.java:113)
    at com.panguso.test.ps.PSTestStandardizedProducts.DataBaseOperation.main(DataBaseOperation.java:157)

    原因是在数据库驱动程序org.gjt.mm.mysql.Driver类中没有源代码,打开后可发现内容为:

    //Compiled from Driver.java (version 1.5 : 49.0, super bit)
    public class org.gjt.mm.mysql.Driver extends com.mysql.jdbc.Driver {

    // Method descriptor #5 ()V
    // Stack: 1, Locals: 1
    public Driver() throws java.sql.SQLException;
    0 aload_0 [this]
    1 invokespecial com.mysql.jdbc.Driver() [1]
    4 return
    Line numbers:
    [pc: 0, line: 46]
    [pc: 4, line: 47]
    Local variable table:
    [pc: 0, pc: 5] local: this index: 0 type: org.gjt.mm.mysql.Driver
    }

    "org.gjt.mm.mysql.Driver 是当时最好的MySQL JDBC,但不是MySQL公司的,然后MySQL将MM的JDBC驱动收为官方的JDBC驱动,所以将驱动的package也该了,但还保留了org.gjt.mm.mysql.Driver这个路径的引用,也就是你使用新版的JDBC驱动时还可以通过这个来引用,你打开下载的新版JDBC驱动的jar文件可以看到,只有一个文件的目录是org.gjt.mm.mysql,就是为了兼容而设计的.  org.git.mm.mysql.Driver 只是简单的继承了 com.mysql.jdbc.driver,并没有实现其他逻辑

    解决办法如下:

    1  用mysql自己的的驱动程序 将org.gjt.mm.mysql.Driver换成com.mysql.jdbc.driver即可。

    2 将代码中try catch 去掉,就不会再报异常,程序可以正常运行。至于安全性我也不清楚,原则上没有,还是建议用1中方法。

    try {
    Class.forName(DBDriver);
    } catch (ClassNotFoundException e) {
    //e.printStackTrace();
    }

  • 相关阅读:
    SqlServer卡慢解决办法
    His表(简化)
    解决Oracle数据库空间不足问题
    获取select下拉框选中的的值
    使用编辑器Sublime
    Angularjs中的$filter
    Angularjs 的Controlleras 和$scope
    在html页面中实现代码的高亮显示
    Angularjs的ui-router
    TML5之Canvas
  • 原文地址:https://www.cnblogs.com/TianMG/p/3062726.html
Copyright © 2020-2023  润新知