java - 运行时找不到 JDBC 类
问题描述
我正在创建一个使用 JDBC 的应用程序,并且当前在运行代码时遇到问题而没有获得java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver
. 我已经对尝试解决此问题进行了广泛的研究,但我尝试过的任何方法似乎都不起作用。
一方面,我想指出我的代码在从我的 IDE (intellij) 运行时运行良好。数据库连接正常,所有查询都根据需要执行。当我尝试在终端中使用javac
and编译和运行时,问题就来了。java
因为这是一个学校项目,我需要让我的教授能够在本地运行它。
其次,我正在使用 intellij 中包含的相同 jar 文件编译应用程序:
javac -classpath lib/\* DatabaseDriver.java
lib 文件夹包含我的 JDBC jar 文件。您可以在此处 (json.org)和此处 (connector j)找到此文件夹中的两个 jar 文件。一切都正确编译,但似乎一旦代码中发生以下执行(完整代码见下文),这是一个运行时异常,表示找不到该类:
Class.forName("com.mysql.cj.jdbc.Driver"); // also tried com.mysql.jdbc.Driver
以下代码是我要编译的代码(不是完整的 DatabaseDriver,足以重现问题):
import org.json.JSONObject;
import java.sql.*;
public class DatabaseDriver {
// JDBC driver name and database URL
static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
public static String runStatement(String sql) throws Exception {
// Register JDBC driver
Class.forName(JDBC_DRIVER);
return "";
}//end main
public static void main(String[] args) throws Exception {
DatabaseDriver.runStatement("SELECT * FROM employees LIMIT 10");
}
}
这是我运行代码时得到的完整堆栈:
Exception in thread "main" java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at DatabaseDriver.runStatement(DatabaseDriver.java:15)
at DatabaseDriver.main(DatabaseDriver.java:40)
问题摘要:我无法运行此脚本以获取 jar 文件,即使它与我的 IDE 能够正确使用的 jar 文件相同。一定有一些我忘记或错过的事情要做,因为我发现的所有解决方案只需要处理忘记包含正确 jar 文件的人。
解决方案
运行您的课程,如下所示:
在基于 Unix 的系统中
java -cp ".:lib/*" DatabaseDriver
在微软视窗中
java -cp ".;lib/*" DatabaseDriver
推荐阅读
- python - “TypeError:Start() 缺少 1 个必需的位置参数:‘self’”
- java - 这种技术会阻止 Java 进行垃圾收集吗?
- mysql - 我的 Sql TIME(STR_TO_DATE) 函数不起作用
- java - While 循环创建永无止境的输入循环
- apache-spark - Spark 中的 PDF 文本
- google-chrome-headless - 从使用 Headless Chrome 创建的 PDF 中删除时间戳和页面 URL
- powerbi - 向下钻取百分比计算调整到上下文 - 日期/日历
- python - 无法识别 python 脚本中的 pip 安装
- r - 在 R 中的多列中过滤值
- react-native - React Native with Expo:如何使用 .env.local 配置文件?