2012-12-18 58 views
1

我安裝了JDK 1.7並試圖連接到不同的MySQL數據庫和Connector/J版本。但每次加載驅動程序時我都會收到以下錯誤:請讓我知道任何與jdk 1.7一起使用的MySQL版本。

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兼容?

+1

會顯示您的打印堆棧跟蹤? –

+2

這與版本不兼容有關。您可能沒有正確地將JDBC驅動程序放入類路徑中,或者您使用的是不正確的JDBC URL。向我們顯示確切的錯誤消息。 – Jesper

+0

@Jesper我已經做了確切的過程..即使如果我已經改變爲jdk 1.6。它完美的工作 –

回答

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或切換回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/J的問題RE安裝。安裝JDK時,它想要更新SQL驅動程序。
您可以嘗試卸載並重新安裝JDK。

+0

Klimachewski:我得到了這個。但是請讓我知道兼容性MySql驅動程序爲jdk 1.7 –

+0

請參閱我的解決方案回答 –

+0

mysql-installer-5.5.20.0 –

3

異常消息這樣說:了java.lang.RuntimeException:

「致不可編譯的源代碼 - com.mysql.jdbc.NonRegisteringDriver不是抽象的,不重寫抽象方法getParentLogger( )在java.sql.Driver中的」

我覺得現在的問題是,你(或其他人)有/試圖從源代碼構建JDBC驅動程序並沒有注意到有編譯錯誤,並組裝將產生的「.class」文件分解成JAR文件。


標準Connector/J驅動JAR從MySQL網站文件應該使用Java 7的工作肯定,我從來沒有經歷過這樣的任何問題他們。


我更傾向於認爲,我可以比你保證異常消息看到證據,一切都是「完美」:

  • 你確定你使用的連接器/ J JAR文件,您從MySQL網站下載?

  • 你是否檢查過MD5校驗和以確保你得到真實的東西?

  • 如果您是從源代碼構建的,您是否閱讀過docs/readme.txt中關於正確構建JRE版本的內容?

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

+0

源代碼,一切都很完美。但事情是驅動程序本身沒有得到加載 –

相關問題