请告诉我任何适用于jdk 1.7的MySQL版本

时间:2012-12-18 10:45:06

标签: java mysql jdbc mysql-connector

我安装了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兼容?

2 个答案:

答案 0 :(得分:3)

异常消息说明了这一点:

  

“引起: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版本的内容?

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

答案 1 :(得分: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和名为mysql-connector-java-5.1.6-bin.jar

的驱动程序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。