MySQL Connector / J中的ClassNotFoundException

时间:2012-05-31 16:06:17

标签: java mysql exception jdbc classloader

以前曾经问过,但我找不到我需要的答案。

1)在eclipse IDE中使用Class.forName("com.mysql.java.Driver")一切正常。我加载了正确的jar(mysql-connector-java-5.1.20-bin.jar),没有例外。

当我为我的应用a1.jar创建一个jar并双击jar时,我得到了ClassnotFoundException

我在Windows XP中使用

创建了一个.bat文件

java -classpath c:\temp\mysql-connector-java-5.1.20-bin.jar -jar c:\temp\a1.jar app statrs具有相同的异常。

此外,使用System.getProperty ("java.class.path")显示c:\temp\a1.jar,而在IDE中我可以看到几个目录

4 个答案:

答案 0 :(得分:1)

当您从jar运行应用程序时,您可能需要检查清单文件添加类路径依赖项的方式。看一下这个Manifest Classpath

答案 1 :(得分:1)

驱动程序为com.mysql.jdbc.Driver,而不是com.mysql.java.Driver

您收到ClassNotFoundException,因为Connector / J库中没有com.mysql.java.Driver类。

答案 2 :(得分:0)

您可以做的另一件事是将所有必需的库放在可执行jar中的单个文件中。 以下回复可能会有很大帮助:

从Eclipse 3.5开始,您还可以使用eclipse向导导出可执行jar。

使用文件>导出...并选择Runnable JAR文件。 Runnable Jar Export窗口有一个单选按钮,您可以在其中选择Extra或将所需的库打包到genratated jar中。

Export Runnable JAR File Export

答案 3 :(得分:0)

如果使用-jar执行文件,则会忽略任何外部类路径(在命令行或环境中提供)。它仅查找Class-path:文件中的META-INF/MANIFEST.MF条目。如果没有在那里指定MySQL jar,它将不会加载它。