在 Java 中,java.lang.ClassNotFoundException 是一个检查型异常,当 Java 虚拟机 (JVM) 尝试加载特定的类,但在类路径 中找不到该指定的类时,就会发生这种异常。我们应该使用 try-catch 块或 throw 关键字来妥善处理 ClassNotFoundException。
在早期,并没有像 Eclipse 这样的编辑器。即使在记事本 中,人们也通过使用“javac”命令来编译 Java 文件,从而生成一个 ‘.class‘ 文件。有时,生成的类文件可能会意外丢失或被放置在不同的位置,因此很有可能会发生 ClassNotFoundException。随着 Eclipse、Netbeans 等编辑器的出现,IDE 会自动创建一种类路径 条目。
Java 中出现 ClassNotFoundException 的原因
要加载一个类,java.lang.ClassNotFoundException 主要使用以下 3 种方法:
- Class.forName(): 用于加载 JDBC 驱动程序
- ClassLoader.findSystemClass(): 用于通过系统类加载器 加载类。
- ClassLoader.loadClass(): 用于加载类
从上面的图片中,我们可以看到存在许多 jar 文件。如果 Java 代码想要与 MySQL、MongoDB 等数据库进行交互,这些文件是绝对必要的,而且有些功能需要这些 jar 文件存在于构建路径 中。如果没有添加它们,编辑器首先会直接显示错误,并提供修正选项。
Java 中的 ClassNotFoundException 示例
#### 示例:连接 MySQL 数据库并获取内容的示例程序
Java
CODEBLOCK_777cb2a2
输出
情况 1: 在上面的代码中,我们使用了 com.mysql.cj.jdbc.Driver,在这种情况下,如果我们没有 mysql-connector-java-8.0.22.jar,那么我们将会遇到 ClassNotFoundException。
情况 2: 因此,我们需要将 jar 包放入构建路径中,如下图所示。
> 注意: 同理,对于任何数据库连接,我们需要拥有相应的 jar 包来连接该数据库。下表以表格形式列出了 Java 克服 ClassNotFoundException 所需的数据库驱动 jar 包列表。
要解决 Java 中的 ClassNotFoundException,相应数据库需要以下 JAR 文件。
Command Line
—
mysql-connector-java-8.0.22.jar
mongo-java-driver-3.12.7.jar
sqljdbc4.jar
sqljdbc.jar
oracle.jdbc.driver.oracledriver> 注意:
>
>
> – 当我们开发基于 Web 的应用程序时,必须将 jar 包放在