当前位置: 首页 > 知识库问答 >
问题:

Java-错误:发生JNI错误。。。在线程“main”java中。lang.UnsupportedClassVersionError:

柳飞鸾
2023-03-14

目前我尝试在本地连接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:\用户\Marco\IdeaProjects\mysql-Connecter-java-8.0.13\mysql-connector-java-8.0.13.jarJdbcSelectTest运行编译时,我收到以下错误:

错误:发生JNI错误,请检查您的安装并在线程“main”java中重试异常。lang.UnsupportedClassVersionError:JdbcSelectTest由最新版本的Java运行时(类文件版本55.0)编译,此版本的Java运行时仅识别高达52.0的类文件版本。。。

我的JAVA_HOME属性指向我本地安装的jdk版本11.0.1。
mysql-连接器-java版本ist: 8.0.13。
有人能帮我吗-顺便说一句。我在java上很新手-所以任何评论都有帮助。

共有2个答案

鲁明知
2023-03-14

存在java版本不匹配。您需要安装正确版本的java,即java 8并用它编译您的代码。在这里您可以找到一个包含所需版本的表:vers。

任繁
2023-03-14

您的问题与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变量,但还必须查看路径变量才能修复此问题。此链接将帮助您做到这一点。

 类似资料:
  • 我用记事本写了一个“Helloworld.java”文件。我通过写“javac Helloworld.java”在cmd上编译,我在同一个目录中得到了“Helloworld.class”文件。 我编写了“java Helloworld”来启动它,出现了一个JNI错误。 我检查了我的java版本,找不到原因。我如何解决这个问题? 我将java bin的路径添加到系统的路径列表中。 下面是我的cmd屏

  • 问题内容: 这是代码: 错误: 跑: 请帮助我解决此错误。我正在使用Windows Vista OS。 谁能建议我如何以.3gp格式存储文件?请帮助 问题答案: 方法内部的第202行的某些对象引用是在代码尝试使用点运算符访问/调用它时进行的。 例如 解决方案实际上很简单。只需实例化它即可确保它不为空: …或在访问/调用之前简单地执行nullcheck:

  • 我试图使用命令“java-jar XXXX.jar”运行spring boot项目,但出现以下错误: 错误:发生JNI错误,请检查您的安装并重试线程“main”java.lang.NoClassDefFoundError中的异常:org/modelmapper/modelmapper位于java.lang.Class.getDeclaredMethods0(本机方法),java.lang.Clas

  • 我的代码中出现了这个错误。 这是我的代码: 这就是结果。错误:在线程“main”java中输入model:Exception。lang.NullPointerException在汽车上。主(车.java:10)

  • 我收到控制台错误-无法访问行值 mdiwindow.frames.volumecharting_calc$save.updateRow(volumecharting_calc.java:497)mdiwindow.frames.volumecharting_calc.java:363)java.util.concurrent.ThreadPoolExecutor.runworker(ThreadP