java - 为什么我收到 NoClassDefFoundError/ClassNotFoundException

标签 java mysql eclipse jdbc cmd

我一直在关注this tutorial相应地。

在命令提示符中运行 FirstExample 类之前,它会因某种原因而开始崩溃。尝试运行以下命令后:

java FirstExample

我收到以下异常:

Exception in thread "main" java.lang.NoClassDefFoundError: FirstExample

我知道由于类路径(出于某种原因),它找不到 FirstExample 类,因此我执行了以下命令:

java -cp . FirstExample

现在它返回一个新的异常:

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

现在找不到 JDBC 驱动程序。这让我很困惑,因为对于初学者来说,我通过 Eclipse 运行了完全相同的代码,它按预期工作,其次,我尽可能确保执行与 Eclipse 正在执行的相同的类文件,并且命令提示符仍然返回异常。我还甚至将 FirstExample 文件放在一个单独的文件夹中,只是为了将 MySQL Connector 复制并粘贴到同一文件夹中,但我仍然遇到异常。

我只是不明白发生了什么事,有人可以帮助我吗?

非常感谢。

<小时/>

连接器的文件路径如下:

C:\Program Files\MySQL\mysql-connector-java-3.1.14\mysql-connector-java-3.1.14-bin.jar

希望这有帮助。

<小时/>

出于测试目的,我已将 FirstExample 类放置在以下路径下:

C:\java

最佳答案

This confuses me because for starters, I ran the exact same coding through Eclipse and it works as expected

这是因为在 Eclipse 中,您将库添加到构建路径中,并且在运行项目时,它将自动使用类路径中指定的所有库。可以在这里注明:

Eclipse Build Path

为了让您能够从命令行工具使用第三方库执行项目,您应该在类路径中显式手动指定库:

java -cp <path/to/mysql_jar/goes/here>:. FirstExample
<小时/>

根据您的评论:

the path to the MySQL file is: C:\Program Files\MySQL\mysql-connector-java-3.1.14\mysql-connector-java-3.1.14-bin.jar (...) I have placed the FirstExample class under C:\java

这应该是要使用的命令行:

java -cp "C:\Program Files\MySQL\mysql-connector-java-3.1.14\mysql-connector-java-3.1.14-bin.jar; ." FirstExample

请注意,最好将所有第三方库存储在项目中的单个文件夹中(通常称为 lib),并在其中放置引用。假设您当前的文件夹有一个 lib 文件夹,并且所有第三方库都复制到那里,则命令行将是:

java -cp "lib\*; ." FirstExample

关于java - 为什么我收到 NoClassDefFoundError/ClassNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23763297/

相关文章:

php - $_GET 无法正常工作

Android 开发 - 安装出错?

java - 如何在eclipse中管理Libraries/jar文件?

java - 关于 JUnit 测试的字段的访问权限

java - 使 HttpSession 变量静态?

mysql - 通过 user_id 获取不同的值作为数组

java - 函数定义前@Produces、@GET、@Path 和@QueryParam 的意义

java - 用Java分割和大写字符串中的单词

java - 如何使用bytebuddy检测无法访问的代码?

mysql - INSERT 中的 SQL 子查询?