PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : java.lang.ClassNotFoundException: com.mysql.jdbc.Driver



chebrise
23.11.08, 08:18
hallo,

ich hoffe, dass ich hier richtig bin mit meinem Install-Linux-Programmierer-Problem.

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
bekomme ich wenn ich mein Java Prog ausführen möchte,
kompilieren lässt es sich ohne Probleme

den JDBC Treiber habe ich in /etc/profile erfolgreich eingetragen:
PATH=$PATH:/usr/share/java

Wenn ich nun NetBeans als DB-Treiber den Ort /usr/share/java angebe, wird kurz getestet ob das funktioniert und NetBeans meldet, dass mit dem DB-Treiber alles OK ist und lässt mich weiter machen.

Ich würde aber gerne ohne NetBeans meine Programme schreiben (fehlende Erfahrung) :-(
warum funktioniert die DB-Treiber Einbindung nicht als Class-Variable bzw. PATH-Variable?

Ubuntu 8.04

Leider konnten mir die Ubuntuusers.de nicht dabei helfen und nun hoffe ich, dass mir hier geholfen werden kann. Echt doof wenn man wegen einem Problem nicht weiter machen kann [doppel]:-(

MiGo
23.11.08, 09:26
ich hoffe, dass ich hier richtig bin mit meinem Install-Linux-Programmierer-Problem.
Fast, für Programmierung gibt's auch das Schwesterforum http://mrunix.de


den JDBC Treiber habe ich in /etc/profile erfolgreich eingetragen:
PATH=$PATH:/usr/share/java
Erfolgreich ja, aber total falsch. Der Eintrag zum JBDC-Treiber gehört in in den Classpath, das ist etwas total anderes als $PATH.
Ohne IDE würdest du den Classpath in etwa so angeben:

java -cp /pfad/zum/treiber:/weitere/pfade meineJavaDatei

(Google sicherheitshalber nochmal nach dem korrekten Aufruf, ich verwende eigentlich auch immer nur Eclipse :))

chebrise
23.11.08, 09:58
edit:
immer den Classpath angeben ist aber sehr lästig :-(
jaja, mist, mit eclipse oder NetBeans komme ich noch nicht so zurecht, die machen mir zu viel automatisch was ich erst nacharbeiten muss

ich hab es nun so in der /etc/profile eingetragen:
export $CLASSPATH=/usr/share/java

wenn ich in einer Shell echo $CLASSPATH eingebe, bekomme ich auch mein Verzeichnis angezeigt

aber das Java Prog findet die Klasse immer noch nicht... hab mir mal ne Exception werfen lassen:

Exception in thread "main" java.lang.NoClassDefFoundError: CDRabfrage
Caused by: java.lang.ClassNotFoundException: CDRabfrage
at java.net.URLClassLoader$1.run(URLClassLoader.java: 217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.j ava:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:3 23)
at sun.misc.Launcher$AppClassLoader.loadClass(Launche r.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:2 68)
at java.lang.ClassLoader.loadClassInternal(ClassLoade r.java:336)
Could not find the main class: CDRabfrage. Program will exit.

mborchi
23.11.08, 12:54
du hast den standard-classpath überschrieben, in dem das aktuelle lokale verzeichnis enthalten ist.

so sollte es funktionieren:
export CLASSPATH=$CLASSPATH:/usr/share/java
bei mir tut es das jedenfalls...

chebrise
23.11.08, 15:34
vorher gab es keinen Inhalt in $CLASSPATH
echo $CLASSPATH brachte eine leere Zeile
jetzt gibt es mir meinen angegebenen Klassenpfad

edit:

die Ubuntuusers haben es dann doch raus bekommen:
in /etc/profile
export CLASSPATH=$CLASSPATH:/usr/share/java/mysql-connector-java.jar
dann funktionierte es

also nicht nur den Pfad, sondern komplet mit .jar File angeben

framp
23.11.08, 20:09
also nicht nur den Pfad, sondern komplet mit .jar File angeben
Bei Java muss man immer genau angeben welche jars ar Runtime zu benutzen sind. Ist nicht so wie mit bins das man einfach den path angibt. Das hat Vorteile und Nachteile ;-)