【问题标题】:Please let me know any MySQL version which works with jdk 1.7请让我知道任何适用于 jdk 1.7 的 MySQL 版本
【发布时间】:2012-12-05 13:22:07
【问题描述】:

我安装了 JDK 1.7 并尝试连接到不同的 MySQL 数据库和 Connector/J 版本。但是每次加载驱动程序时都会出现以下错误:

Exception in thread "main" java.lang.ExceptionInInitializerError
 at java.lang.Class.forName0(Native Method)
 at java.lang.Class.forName(Class.java:186)
 at jdbc.JDBC.main(JDBC.java:24)
Caused by: java.lang.RuntimeException: Uncompilable source code - com.mysql.jdbc.NonRegisteringDriver is not abstract and does not override abstract method getParentLogger() in java.sql.Driver
 at com.mysql.jdbc.NonRegisteringDriver.<clinit>(NonRegisteringDriver.java:69)
 ... 3 more

哪个 MySQL 驱动版本兼容 JDK 1.7?

【问题讨论】:

  • 你会显示你的打印堆栈跟踪吗?
  • 这与版本不兼容没有任何关系。您可能没有正确地将 JDBC 驱动程序放在类路径中,或者您使用的 JDBC URL 不正确。向我们显示确切的错误消息。
  • @Jesper 我已经完成了确切的过程.. 即使我已经更改为 jdk 1.6 。它的作品完美
  • @MohammodHossain 运行:java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:186) 处的线程“main”java.lang.ExceptionInInitializerError 异常在 jdbc.JDBC.main(JDBC.java:24) 引起:java.lang.RuntimeException:无法编译的源代码 - com.mysql.jdbc.NonRegisteringDriver 不是抽象的,并且不会覆盖 java.sql 中的抽象方法 getParentLogger()。 com.mysql.jdbc.NonRegisteringDriver.(NonRegisteringDriver.java:69) 的驱动程序 ... 3 更多
  • 我认为mysql驱动和你的jdk不兼容

标签: java mysql jdbc mysql-connector


【解决方案1】:

异常消息是这样说的:

“原因:java.lang.RuntimeException:无法编译的源代码 - com.mysql.jdbc.NonRegisteringDriver 不是抽象的,不会覆盖 java.sql.Driver 中的抽象方法 getParentLogger()”

我认为问题在于您(或其他人)已经/已经尝试从源代码构建 JDBC 驱动程序并且没有注意到存在编译错误,并将生成的损坏的“.class”文件组装成 JAR文件。


来自 MySQL 网站的标准 Connector/J 驱动程序 JAR 文件应该适用于 Java 7。当然,我从来没有遇到过这样的问题。


我更倾向于相信我在异常消息中看到的证据,而不是你对一切“完美”的保证:

  • 您确定使用的是从 MySQL 网站下载的 Connector/J JAR 文件吗?

  • 您是否检查了 MD5 校验和以确保您得到的是真实的东西?

  • 如果您从源代码构建,您是否阅读过 docs/readme.txt 中有关正确构建所需的 JRE 版本的内容?

  • 您的应用程序的类路径中是否有其他(损坏的)驱动程序副本?

【讨论】:

  • 源代码,一切都很完美。但问题是驱动程序本身没有加载
【解决方案2】:
"Caused by: java.lang.RuntimeException: Uncompilable source code -
com.mysql.jdbc.NonRegisteringDriver is not abstract and does not override
abstract method getParentLogger() in java.sql.Driver"

getParentLogger() 方法在 Java 1.7 中被引入Driver 接口。

找到支持 Java 1.7 的 MySQL 驱动程序或切换回 Java 1.6。

编辑:附加信息:

我测试了 JDK 1.7.10 和一个驱动 Jar,名为:mysql-connector-java-5.1.6-bin.jar

使用以下代码:

public static void main(String[] args) throws ClassNotFoundException,
        InstantiationException, IllegalAccessException, SQLException {
    System.out.println("Java version: "
            + System.getProperty("java.version"));
    Driver driver = (Driver) Class.forName("com.mysql.jdbc.Driver")
            .newInstance();
    System.out.println("JDBC driver: " + driver.getMajorVersion() + "."
            + driver.getMinorVersion());
    Connection connection = DriverManager.getConnection(
            "jdbc:mysql://localhost:3306/DBNAME", "user", "pass");
    System.out.println("Connection: " + connection.getClass().getName());
}

它给出以下输出:

Java version: 1.7.0_10
JDBC driver: 5.1
Connection: com.mysql.jdbc.JDBC4Connection

可能您的 JDK/JRE 安装也有问题。安装JDK时,要更新SQL驱动。
您可以尝试卸载并重新安装 JDK。

【讨论】:

  • Klimachewski:是的,我明白了。但是请让我知道 jdk 1.7 的兼容性 MySql 驱动程序
  • 谢谢您.. 马上结帐
  • 请告诉我,你用过哪个MySql驱动..?
  • @KumarKl - 就像我说的(Udo 刚刚确认)如果你真的使用从 MySQL 网站下载的预编译驱动程序,它们应该可以正常工作。
  • 谢谢两位。我刚刚按照您的建议重新安装。所以它的工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-27
  • 2018-01-23
  • 1970-01-01
  • 2018-11-23
  • 1970-01-01
  • 2019-01-23
相关资源
最近更新 更多