Java 为什么我得到NoClassDefFoundError/ClassNotFoundException

Java 为什么我得到NoClassDefFoundError/ClassNotFoundException,java,mysql,eclipse,jdbc,cmd,Java,Mysql,Eclipse,Jdbc,Cmd,我一直在跟进 直到在命令提示符下运行FirstExample类时,它由于某种原因开始崩溃。尝试运行以下命令后: java FirstExample java -cp . FirstExample 我得到以下例外情况: Exception in thread "main" java.lang.NoClassDefFoundError: FirstExample java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 我知道由于类路径的

我一直在跟进

直到在命令提示符下运行FirstExample类时,它由于某种原因开始崩溃。尝试运行以下命令后:

java FirstExample
java -cp . FirstExample
我得到以下例外情况:

Exception in thread "main" java.lang.NoClassDefFoundError: FirstExample
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
我知道由于类路径的原因,它找不到FirstExample类(出于某种原因),因此我执行了以下命令:

java FirstExample
java -cp . FirstExample
现在它返回一个新的异常:

Exception in thread "main" java.lang.NoClassDefFoundError: FirstExample
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
现在它找不到JDBC驱动程序。这让我感到困惑,因为对于初学者来说,我通过Eclipse运行了完全相同的编码,并且工作正常。其次,我尽可能确保执行Eclipse正在执行的相同类文件,并且命令提示符仍然返回异常。我还将第一个示例文件放在一个单独的文件夹中,只是为了将MySQL连接器复制和粘贴到同一个文件夹中,我仍然会遇到例外情况

我只是不明白发生了什么事,谁能帮帮我吗

非常感谢


连接器的文件路径如下所示:

C:\Program Files\MySQL\mysql-connector-java-3.1.14\mysql-connector-java-3.1.14-bin.jar
希望这有帮助


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

C:\java

类路径中还需要有com.mysql.jdbc.Driver类(以及所有导入的类)

您应该下载jar()并将其添加到类路径中

这让我感到困惑,因为对于初学者来说,我在Eclipse中运行了完全相同的编码,并且工作正常

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

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

java -cp <path/to/mysql_jar/goes/here>:. FirstExample
请注意,最好将所有第三方库存储在项目中的单个文件夹(通常称为lib)中,并在其中放置一个引用。假设当前文件夹中有一个lib文件夹,并且所有第三方库都复制到该文件夹中,则命令行为:

java -cp "lib\*; ." FirstExample

使用下一个示例将JAR添加到类路径:

java -cp "jdbc.jar;lib/*" my.package.FirstExample

当您在class.forName()中编写的类名出现问题或包未设置为classpath变量时,ClassNotFound异常会出现。确保已将jar文件添加到类路径(C:………\jarfilename.jar;)。 这适用于任何JDBC驱动程序和jar文件。添加到类路径的.jar文件对于IDE将不可见,在这种情况下,您需要将jar文件添加到buildpath(在eclipse中),或者您也可以将jar文件复制到Java安装文件夹中的ext文件夹


还请注意,DB软件的jar文件可能会根据您使用的DB软件版本而有所不同,例如,如果您使用的是Oracle 11g,则需要ojdbc6.jar文件,在Oracle的其他版本中,数字会发生变化,如ojdbc14.jar等。

您的类路径中是否有类似ojdbc14.jar的jar文件?如果不是出于测试目的,您可以将这个jar放在类文件所在的同一位置,然后再试一次。您想暗示,只要将jar放在同一目录中,它就会放在类路径上吗?不,这不是我想说的。。。但我就是这么说的。我要编辑了,谢谢你的回复;是的,我已经下载了Connector/J,正如教程中描述的那样,因为这个问题仍然存在。再次感谢您的回复;MySQL文件的路径是:
C:\ProgramFiles\MySQL\MySQL-connector-java-3.1.14\MySQL-connector-java-3.1.14-bin.jar
。我尝试了这个命令,但没有成功,但是我可能输入不正确。您能否澄清我将如何在命令提示符中指定库?非常感谢。同样出于测试目的,我将第一个示例类放在
C:\java
下。根据您的回答,它一直是这样工作的吗?因为如果是这样的话,你会认为教程会指定这一点。是的,教程中也有介绍。是吗?我一定错过了,它到底在哪里?它确实提到了在JDBC-Environments下设置环境变量,但我没有看到任何关于
-cp
“lib\*;”
。感谢您的及时回复。我已经检查了系统环境变量设置下的类路径,如下所示:
C:\ProgramFiles\MySQL\MySQL-connector-java-3.1.14\MySQL-connector-java-3.1.14-bin.jar
。再次感谢您的回复。