Java-错误:发生JNI错误,...在线程“主要” java.lang.UnsupportedClassVersionError中:

时间:2019-01-14 16:23:22

标签: java mysql java-native-interface mysql-connector connector-j

当前,我尝试在本地连接到我的mysql服务器。我的代码如下所示:

import java.sql.*; 

public class JdbcSelectTest {
    public static void main(String[] args) {
        try (
                Connection conn = DriverManager.getConnection(
                        "jdbc:mysql://localhost:3306/ebookshop?useSSL=false", "...", "...");

                Statement stmt = conn.createStatement();
        ) {
            String strSelect = "select title, price, qty from books";
            System.out.println("The SQL query is: " + strSelect);
            System.out.println();

            ResultSet rset = stmt.executeQuery(strSelect);

            System.out.println("The records selected are:");
            int rowCount = 0;
            while(rset.next()) {   // Move the cursor to the next row, return false if no more row
                String title = rset.getString("title");
                double price = rset.getDouble("price");
                int    qty   = rset.getInt("qty");
                System.out.println(title + ", " + price + ", " + qty);
                ++rowCount;
            }
            System.out.println("Total number of records = " + rowCount);

        } catch(SQLException ex) {
            ex.printStackTrace();
        }
    }
}

现在,当我使用javac JdbcSelectTest.java进行编译时,一切正常。但是现在,当我尝试使用java -cp .;C:\Users\Marco\IdeaProjects\mysql-connector-java-8.0.13\mysql-connector-java-8.0.13.jar JdbcSelectTest运行编译时,出现以下错误:

  

错误:发生了JNI错误,请检查您的安装和   再试一次       线程“主”中的异常java.lang.UnsupportedClassVersionError:JdbcSelectTest已由Java的最新版本进行编译   运行时(类文件版本55.0),此        Java Runtime的版本只能识别52.0以下的类文件版本。

我的JAVA_HOME属性指向我本地安装的jdk版本 11.0.1
mysql-connector-java版本ist: 8.0.13
谁能帮帮我-顺便说一句。我是Java的新手,所以任何评论都可以帮助您。

2 个答案:

答案 0 :(得分:2)

您的问题与mysql库无关。

错误消息的有意义的部分:

JdbcSelectTest has been **compiled by** [...] Java Runtime (class file version **55.0**)

vs

this [...] Java Runtime only **recognizes** class file versions up to **52.0**

这可以翻译为:

JdbcSelectTest已由Java 11 编译,但已尝试由Java 8 运行。

如果要验证这一点,只需在控制台中键入以下命令:

:~ > java -version
:~ > javac -version

您会发现它们与众不同。您已经检查了JAVA_HOME变量,但是还必须查看一下PATH变量以解决此问题。 This link将为您提供帮助。

答案 1 :(得分:1)

存在Java版本不匹配。您需要安装Java的正确版本,即Java 8,并使用它编译代码。在这里,您可以找到具有所需版本的表格:vers