簡體   English   中英

請讓我知道與jdk 1.7兼容的任何MySQL版本

[英]Please let me know any MySQL version which works with jdk 1.7

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

異常消息說明:

“由以下原因引起: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版本的內容?

  • 您的應用程序的類路徑上是否有其他(損壞的)驅動程序副本?

"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或切換回Java 1.6 MySQL驅動程序。

編輯:附加信息:

我測試了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。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM