我一直在关注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 中,您将库添加到构建路径中,并且在运行项目时,它将自动使用类路径中指定的所有库。可以在这里注明:
为了让您能够从命令行工具使用第三方库执行项目,您应该在类路径中显式手动指定库:
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/