2011-10-31 82 views
0

我想尝试与Java一起使用SQL,所以我下载了mysql-connector-java-5.1.18-bin.jar。使用SQL与Java - 编译为.jar - “ClassNotFoundException com.mysql.jdbc.Driver”

我使用Eclipse,所以我进入了Eclipse,Project - > Properties并添加了jar文件。

我还添加以下到我的类路径:

  1. C:\用户\ Shahin的\桌面\ MySQL的连接器的Java-5.1.18 \ COM \ MySQL的\ JDBC \;
  2. C:\ Users \ shahin \ Desktop \ mysql-connector-java-5.1.18 \ mysql-connector-java-5.1.18-bin.jar;

它在Eclipse中运行良好,但是当我运行我的。 Jar文件我得到这个错误:

Exception in thread "main" java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 
     at java.net.URLClassLoader$1.run(Unknown Source) 
     at java.net.URLClassLoader$1.run(Unknown Source) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(Unknown Source) 
     at java.lang.ClassLoader.loadClass(Unknown Source) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
     at java.lang.ClassLoader.loadClass(Unknown Source) 
     at java.lang.Class.forName0(Native Method) 
     at java.lang.Class.forName(Unknown Source) 
     at Main.main(Main.java:15) 
+1

你是什么意思,“当我运行我的jar文件”? *你如何*启动它? –

回答

0

这是因为mysql-connector-java-5.1.18-bin.jar是不是在你的类路径,当你运行你的罐子。

在您的.jar文件中应该有一个META-INF/MANIFEST.MF文件。你需要为你的类路径指向其中mysql-connector-java-5.1.18-bin.jar文件位于该文件中的条目:

Class-Path: path/to/mysql-connector-java-5.1.18-bin.jar 

注意这可能是您的本地罐子。做到这一点的常用方法是有一个lib子目录在您的罐子位于包含其他罐子你要看:

Class-Path: lib/mysql-connector-java-5.1.18-bin.jar 
+0

如果我把它放在我的罐子里,那看起来会怎样? ../the-jar-file.jar ? – user1021085

+0

你不能在你的罐子里。 –

+0

那么,为了完整起见,您不需要*,只需确保它在执行时位于类路径中即可。这是做到这一点的一种方式。 (除非它是分布式的,不知道它是最好的,但是这是一个不同的讨论:) –

0

您为MySQL的.jar类路径是最有可能关闭。你的jar放在mysql jar附近吗? (如果没有指向它)为了测试这个,你可以把它们放在同一个目录中,看它是否运行。