MySQL JDBC Treiber einbinden
-
Folgendes Prog hab ich geschrieben:
import java.sql.*; public class MySQL { public static void main( String[] args ) { try { Class.forName("com.mysql.jdbc.Driver").newInstance(); System.out.println("Okay, well done."); } catch ( Exception e ) { e.printStackTrace(); } } }
Und folgendes kommt dabei raus.
Tooms-Rechner:~/Desktop toom$ java MySQL -cp /Users/toom/Desktop/mysql-connector-java-5.0.5/mysql-connector-java-5.0.5-bin.jar java.lang.ClassNotFoundException: com.mysql.jdbc.Driver at java.net.URLClassLoader$1.run(URLClassLoader.java:200) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:188) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268) at java.lang.ClassLoader.loadClass(ClassLoader.java:251) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:164) at MySQL.main(MySQL.java:7)
Mit dem Befehl
java MySQL -cp /Users/toom/Desktop/mysql-connector-java-5.0.5
erhalte ich denselben Fehler.
Wieso ist der Classpath falsch ???
-
das -cp ... muss natürlich VOR den klassennamen !!
-
java -cp /Users/toom/Desktop/mysql-connector-java-5.0.5/mysql-connector-java-5.0.5-bin.jar MySQL Exception in thread "main" java.lang.NoClassDefFoundError: MySQL
Hatte ich auch schon so probiert. Funktioniert auch nicht. MySQL.java wurde ohne Fehler kompiliert und liegt im aktuellen Verzeichnis.
-
Ich glaube das liegt daran, dass du wenn du den Classpath angibst auch deinen "eigenen" angeben musst. D.h. wenn du sowas hast wie java -cp PfadZuExternenTollenSachen MyClass dann musst du das so machen: java -cp .;PfadZuExternenTollenSachen MyClass
War zumindest bei mir immer so, wenn ich auch sowas wie du auf Kommandozeilenebene gemacht habe...
-
Aha, okay hat jetzt geklappt. Vielen Dank. Allerdings muß das Semikolon durch einen Doppelpunkt ersetzt werden. Dann klappt das auch mit den tollen Sachen
-
Hm, wirklich komisch. Bei mir klappt das nicht.
org/aspectj/lang/signature Fehler, No Class Definition. Hat jemand eine Idee woher ich die klasse bekomme?
-
Um nicht den Inhalt der Umgebungsvariable CLASSPATH zu überschreiben, sondern den Pfad zu dem Paket (in unserem Fall der MySQL JDBC Treiber) anzuhängen, gehe ich wie folgt vor...
martin@debian:~/Documents/java/db$ echo $CLASSPATH .:/usr/lib/j2se6.0-sun/jre/lib/plugin.jar martin@debian:~/Documents/java/db$ export CLASSPATH=${CLASSPATH}:`pwd`/mysql-connector-java-5.0.4-bin.jar martin@debian:~/Documents/java/db$ echo $CLASSPATH .:/usr/lib/j2se6.0-sun/jre/lib/plugin.jar:/home/martin/Documents/java/db/mysql-connector-java-5.0.4-bin.jar martin@debian:~/Documents/java/db$ javac main.java martin@debian:~/Documents/java/db$ java main idx=1 a=8388608 b= 16777216 c=33554432 idx=2 a=16777216 b= 33554432 c=67108864 idx=3 a=25165824 b= 50331648 c=100663296 martin@debian:~/Documents/java/db$
So bleibt "plugin.jar" und "." im CLASSPATH enthalten und muss nicht von Hand aufgeführt werden.
Grüße
Martin
-
Das klappt alles nicht. Kann mir jemand sagen, was "org.aspectj.lang.signature" für eine klasse ist, wofür wird diese gebraucht?
-
C:\project>set CLASSPATH=.:c:\j2sdk1.4.2_13\jre\lib\plugin.jar:c:\project\mysql- connector-java-3.1.14.jar C:\project>echo %CLASSPATH% .:c:\j2sdk1.4.2_13\jre\lib\plugin.jar:c:\project\mysql-connector-java-3.1.14.jar C:\project>java main Exception in thread "main" java.lang.NoClassDefFoundError: main C:\project>
-
C:\project>java -classpath c:\project;c:\j2sdk1.4.2_13\jre\lib;c:\j2sdk1.4.2_13\ jre\lib\plugin.jar; main Starting Server v0.3Exception in thread "main" java.lang.NoClassDef FoundError: org/aspectj/lang/Signature at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) at Server.<init>(main.java:123) at main.main(main.java:261) C:\project>
-
Mit Folgendem scheint es wohl zu funktionieren.
> java classpath -classpath .;c:\j2sdk1.4.2_13\jre\lib;c:\j2sdk1.4.2_13\jre\lib\ main