当前,我尝试在本地连接到我的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的新手,所以任何评论都可以帮助您。
答案 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。