2012-12-22 276 views
0

我得到這個當我嘗試推出我們的Java服務器: 拋出java.lang.ClassNotFoundException:com.mysql.jdbc.Drivercom.mysql.jdbc.Driver該怎麼辦?

但我有使用mysql-connector-java的5.1.22-bin.jar在腳本所在的同一個文件夾中,並且在我運行腳本時進行此操作:

java -cp mysql-connector-java-5.1.22-bin.jar -jar AvatarServer.jar 

但仍然得到此。該怎麼辦?我使用的是CentOS服務器。

[email protected] [/home/nagoom/Server_Example]# java -cp mysql-connector-java-5.1.22-bin.jar  -jar AvatarServer.jar 
************************ 
    ** FIRING UP SERVER! ** 
    ************************ 
    Running MySQLChatMessageSaver 
    java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 
at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
at java.lang.Class.forName0(Native Method) 
at java.lang.Class.forName(Class.java:169) 
at database.DatabaseConnection.connect(DatabaseConnection.java:13) 
at items.ItemsDatabase.DownloadData(ItemsDatabase.java:35) 
at items.ItemsDatabase.InitializeData(ItemsDatabase.java:24) 
at network.SocketHandler.startListening(SocketHandler.java:84) 
at server.AvatarServer.run(AvatarServer.java:44) 
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 
at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
at java.lang.Class.forName0(Native Method) 
at java.lang.Class.forName(Class.java:169) 
at database.DatabaseConnection.connect(DatabaseConnection.java:13) 
at gameInstances.RoomController.DownloadRoomData(RoomController.java:46) 
at gameInstances.RoomController.InitializeRooms(RoomController.java:32) 
at network.SocketHandler.startListening(SocketHandler.java:85) 
at server.AvatarServer.run(AvatarServer.java:44) 
    java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 
at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
at java.lang.Class.forName0(Native Method) 
at java.lang.Class.forName(Class.java:169) 
at database.DatabaseConnection.connect(DatabaseConnection.java:13) 
at gameInstances.RoomController.LoadLockedSeatsForAll(RoomController.java:121) 
at gameInstances.RoomController.InitializeRooms(RoomController.java:33) 
at network.SocketHandler.startListening(SocketHandler.java:85) 
at server.AvatarServer.run(AvatarServer.java:44) 
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 
at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
at java.lang.Class.forName0(Native Method) 
at java.lang.Class.forName(Class.java:169) 
at database.DatabaseConnection.connect(DatabaseConnection.java:13) 
at gameInstances.RoomController.DownloadApartmentData(RoomController.java:89) 
at gameInstances.RoomController.InitializeRooms(RoomController.java:34) 
at network.SocketHandler.startListening(SocketHandler.java:85) 
at server.AvatarServer.run(AvatarServer.java:44) 
    java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 
at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
at java.lang.Class.forName0(Native Method) 
at java.lang.Class.forName(Class.java:169) 
at database.DatabaseConnection.connect(DatabaseConnection.java:13) 
at gameInstances.RoomController.LoadItemsForAllRooms(RoomController.java:160) 
at gameInstances.RoomController.InitializeRooms(RoomController.java:35) 
at network.SocketHandler.startListening(SocketHandler.java:85) 
at server.AvatarServer.run(AvatarServer.java:44) 
    java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 
at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
at java.lang.Class.forName0(Native Method) 
at java.lang.Class.forName(Class.java:169) 
at database.DatabaseConnection.connect(DatabaseConnection.java:13) 
at clothes.ClothesDatabase.DownloadGraphicsData(ClothesDatabase.java:42) 
at clothes.ClothesDatabase.InitializeGraphics(ClothesDatabase.java:31) 
at network.SocketHandler.startListening(SocketHandler.java:86) 
at server.AvatarServer.run(AvatarServer.java:44) 
     MySQL exception: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 
    MySQL exception: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 
     java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 
at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
at java.lang.Class.forName0(Native Method) 
at java.lang.Class.forName(Class.java:169) 
at database.DatabaseConnection.connect(DatabaseConnection.java:13) 
at moods.MoodsDatabase.DownloadData(MoodsDatabase.java:29) 
at moods.MoodsDatabase.InitializeData(MoodsDatabase.java:16) 
at network.SocketHandler.startListening(SocketHandler.java:89) 
at server.AvatarServer.run(AvatarServer.java:44) 
    java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 
at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
at java.lang.Class.forName0(Native Method) 
at java.lang.Class.forName(Class.java:169) 
at database.DatabaseConnection.connect(DatabaseConnection.java:13) 
at robots.RobotHandler.downloadBots(RobotHandler.java:31) 
at network.SocketHandler.startListening(SocketHandler.java:90) 
at server.AvatarServer.run(AvatarServer.java:44) 
    java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 
at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
at java.lang.Class.forName0(Native Method) 
at java.lang.Class.forName(Class.java:169) 
at database.DatabaseConnection.connect(DatabaseConnection.java:13) 
at levels.LevelDatabase.DownloadData(LevelDatabase.java:21) 
at network.SocketHandler.startListening(SocketHandler.java:91) 
at server.AvatarServer.run(AvatarServer.java:44) 
    java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 
at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
at java.lang.Class.forName0(Native Method) 
at java.lang.Class.forName(Class.java:169) 
at database.DatabaseConnection.connect(DatabaseConnection.java:13) 
at network.SocketHandler.resetOnlineStatuses(SocketHandler.java:172) 
at network.SocketHandler.startListening(SocketHandler.java:93) 
at server.AvatarServer.run(AvatarServer.java:44) 

回答

2

add mysql-connector-java-5.1.22-bin.jar to class-path in MANIFEST.MF file in AvatarServer.jar。示例:

Class-Path: mysql-connector-java-5.1.22-bin.jar 
+0

謝謝,我發現它應該在哪裏,並重命名文件等感謝! – JKMadsen

4

-jar-cp是互斥的。 -jar說:類路徑是以下jar,並且其清單文件中引用了所有庫。所以,你必須使用:

java -cp mysql-connector-java-5.1.22-bin.jar;AvatarServer.jar com.foo.bar.AvatarMainClass 

,或者,如果你想與-jar運行你的應用程序,參考MySQL驅動的jar JAR的清單文件,如the jar tutorial解釋。

+0

您的示例不起作用。我不熟悉Java。這是我之前程序員的一個java源代碼。我不知道該怎麼辦。 – JKMadsen

+0

定義「不起作用」。從字面上看,你沒有使用類名「com.foo.bar.AvatarMainClass」,是嗎?如果是這樣,當然,您必須將此類名稱替換爲您想要啓動的實際主類。在jar的清單文件中引用的那個。 –