为什么我得到NoClassDefFoundError / ClassNotFoundException

时间:2014-05-20 14:57:04

标签: 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

4 个答案:

答案 0 :(得分:1)

  

这让我感到困惑,因为对于初学者来说,我通过Eclipse运行完全相同的编码并且按预期工作

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

Eclipse Build Path

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

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

通过你的评论:

  

MySQL文件的路径是:C:\ Program Files \ MySQL \ mysql-connector-java-3.1.14 \ mysql-connector-java-3.1.14-bin.jar(...)我放置了C:\ java

下的FirstExample类

这应该是使用的命令行:

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

答案 1 :(得分:0)

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

您应该下载jar(http://dev.mysql.com/downloads/connector/j/5.0.html)并将其添加到类路径中。

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

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

另请注意,数据库软件的jar文件可能会因您使用的数据库软件版本而异,例如,如果您使用的是Oracle 11g,则需要ojdbc6.jar文件,在其他版本的Oracle中,数字更改像ojdbc14.jar等。