英文:
JDBC with VSCode class not found
问题
我在使用VS Code创建Java项目并添加"mysql-connector-java-8.0.21.jar"方面遇到了严重的问题。
我已经完成了以下步骤:
- 通过命令行在VS Code中创建了一个全新的Java项目。
- 通过执行"Add referenced libraries"来添加了mysql连接器。
我尝试过使用JDK 11和15(因为VS Code不再支持JDK 8)。
运行我的代码会导致错误:java.lang.ClassNotFoundException: com.mysql.cj.LocalizedErrorMessages
以下是我的部分代码示例:
import java.lang.reflect.InvocationTargetException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class SimpleJDBCApplication {
static final String DB_URL = "jdbc:mysql://localhost:3306/company";
static final String DB_DRV = "com.mysql.jdbc.Driver";
static final String DB_USER = "root";
static final String DB_PASSWD = "";
public static void main(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException,
IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException {
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
try {
// 连接到数据库的JDBC代码
System.setProperty("jdbc.drivers", "com.mysql.jdbc.Driver");
Class.forName("com.mysql.jdbc.Driver").getDeclaredConstructor().newInstance();
connection = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWD);
statement = connection.createStatement();
resultSet = statement.executeQuery ("SELECT * FROM dept");
while(resultSet.next()){
System.out.printf("%d\t%s\t%s\n",
resultSet.getInt(1),
resultSet.getString(2),
resultSet.getString(3));
}
} catch (SQLException e) {
// 处理异常
} finally {
// 关闭资源
}
}
}
错误出现在这一行:connection=DriverManager.getConnection(DB_URL,DB_USER,DB_PASSWD);
谢谢您的帮助。
英文:
I am having serious trouble creating a Java Project with VS Code with adding the "mysql-connector-java-8.0.21.jar".
I have done the following steps:
- Creating a fresh Java project with VS Code from the command line
- Adding the mysql connector by doing "Add referenced libraries".
I tried using both jdk 11 and 15 (not 8 since VS Code doesn't support it anymore)
Launching my code result in the error: java.lang.ClassNotFoundException: com.mysql.cj.LocalizedErrorMessages
Here is an extract of my code:
import java.lang.reflect.InvocationTargetException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class SimpleJDBCApplication {
static final String DB_URL = "jdbc:mysql://localhost:3306/company";
static final String DB_DRV = "com.mysql.jdbc.Driver";
static final String DB_USER = "root";
static final String DB_PASSWD = "";
public static void main(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException,
IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException {
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
try{
/*To connect with a database using JDBC you need to select get the
driver for the respective database and register the driver.
The forName() method of the class named Class accepts a class name
as a String parameter and loads it into the memory, Soon the is
loaded into the memory it gets registered automatically */
//Take new instance
System.setProperty("jdbc.drivers", "com.mysql.jdbc.Driver");
Class.forName("com.mysql.jdbc.Driver").getDeclaredConstructor().newInstance();
connection=DriverManager.getConnection(DB_URL,DB_USER,DB_PASSWD);
statement=connection.createStatement();
resultSet=statement.executeQuery ("SELECT * FROM dept");
while(resultSet.next()){
System.out.printf("%d\t%s\t%s\n",
resultSet.getInt(1),
resultSet.getString(2),
resultSet.getString(3));
The error occures at the line connection=DriverManager.getConnection(DB_URL,DB_USER,DB_PASSWD);
Thank you for any help
答案1
得分: 1
-
这适用于 MySQL 版本在 8.0 以下:
static final String DB_URL = "jdbc:mysql://localhost:3306/company";
修改为:
static final String DB_URL = "jdbc:mysql://localhost:3306/company?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC";
-
将
com.mysql.jdbc.Driver
更改为com.mysql.cj.jdbc.Driver
; -
Class.forName("com.mysql.cj.jdbc.Driver")
足够了,同时在这段代码中,不需要System.setProperty("jdbc.drivers", "com.mysql.jdbc.Driver")
,你可以将其注释或删除;这对我起作用,你可以尝试一下。
英文:
1.This is applicable to MySQL version below 8.0:
> static final String DB_URL = "jdbc:mysql://localhost:3306/company";
Change it to
static final String DB_URL ="jdbc:mysql://localhost:3306/company?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC"
2.Transfer com.mysql.jdbc.Driver
to com.mysql.cj.jdbc.Driver
;
3.Class.forName("com.mysql.cj.jdbc.Driver")
is enough, also with this code, System.setProperty("jdbc.drivers", "com.mysql.jdbc.Driver")
isn't needed, you can comment or delete it;
This works for me and you can have a try.
答案2
得分: 0
根据文档,类名应为com.mysql.cj.jdbc.Driver
,而不是com.mysql.jdbc.Driver
。此外,对getDeclaredConstructor()
的调用似乎是不必要的。也许这些是问题的源头。
英文:
According to the documentation the class name should be com.mysql.cj.jdbc.Driver
instead of com.mysql.jdbc.Driver
. Also the call to getDeclaredConstructor()
seems to be unnecessary. Maybe those are the source of your problems.
答案3
得分: 0
点击VSCode左侧的资源管理器选项卡中的"Java项目"。然后右键单击您的项目名称,然后单击"配置类路径"。这将在新选项卡中打开类路径配置。滚动到底部,然后单击"添加引用库"。这将打开一个资源管理器弹出窗口。选择java-mysql连接器jar文件,然后应该可以工作。
英文:
Click on Java Projects in the explorer tab on the left-hand side in VSCode. Then right-click on your project name and click on Configure Classpath. this will open Classpath Configuration in a new tab. Scroll to the bottom and then click add on the referenced libraries. This will open an explorer pop-up window. Select the java-mysql connector jar file and then it should work.
答案4
得分: 0
Step 1) 打开 VS Code 左下角的 Java 项目。
Step 2) 点击引用库中的 + 按钮。
Step 3) 浏览并选择驱动程序,即此情况下的连接器文件。
Step 4) 问题解决,连接已创建。
英文:
Step 1) Open java projects from bottom left of VS Code
Step 2) Click on + button on refrenced libraries
Step 3) Browse for the driver i.e. the connector file in this case.
Step 4) Problem solved & connection created
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论