[Eclipse] Externe Library (JAR) einbinden

chrissel

Woohooo!
ID: 211634
L
20 April 2006
4.489
472
Hallo,
ich schau mir gerade Eclipse an und mir gefällt es ganz gut.

Leider habe ich ein Problem, mein Programm benötigt den Connector/J, dieser liegt als *.jar Datei vor und habe ich in dem Ordner Projekt/lib kopiert. Bei "Properties" => "Java Build Path" => "Libraries" habe ich die JAR hinzugefügt, unter "Order und Export" den Haken vor der JAR gemacht damit sie mit exportiert wird.
Dann exportiere ich alles als JAR und die andere JAR ist dort auch mit drin, also sollte alles klappen. Was es aber nicht tut! Sobald ich das Programm starte kommt eine 'ClassNotFoundException', welche mir sagt, dass die Klasse ' com.mysql.jdbc.Driver' fehlt. Diese sollte aber wegen meiner externen Library (Connector/J) da sein.


Weiß hier jemand, was ich falsch mache? Danke!


EDIT:
Okay, man brauchte ein Plugin ;) 'Fat Jar', damit das als 'Fat Jar' exportieren und es geht. :)
 
Zuletzt bearbeitet:
Pass aber auf, dass du damit nicht gegen die LGPL-Lizenz verstößt ;)

Edit: das ist ja wirklich LGPL, na dann geht das net, entweder du machst deinen Source auch öffentlich oder du lädst die Jar zur Laufzeit ;)

Uff... Das heißt es liegt auch am Plugin von meiner Software ob mein Code öffentlich sein muss oder nicht? Krank diese Lizenzen...

Gibt es denn noch einen anderen Weg, dass ich meinen Code nicht öffentlich machen muss? ;)


Also ich muss alles auch nicht unbedingt in einer JAR haben, wenn ich den Connector/J so als JAR behalten kann und mein Programm eine JAR ist wäre es mir ehrlich gesagt sogar lieber.
 
wenn ich den Connector/J so als JAR behalten kann und mein Programm eine JAR ist wäre es mir ehrlich gesagt sogar lieber.

jep, das geht auch, und dann verstößte net gegen die lizenzen.
Und das zu lösen gibt es viele Möglichkeiten ^^
den Classpath im Windows ändern, am dem aufruf der jar einen "optionalen" Classpath übergeben oder in Java einen eigenen Classloader schreiben

brauchst du denn den Connector/J ?
Denn Java hat ja onboard schon ne JDBC-Verbindung zu MySQL
 
[..]brauchst du denn den Connector/J ?
Denn Java hat ja onboard schon ne JDBC-Verbindung zu MySQL

Ja? Ich hatte überall nur Connector/J gesehen, also wenn ich es auch anders lösen kann ohne extra Library wäre es perfekt. :)

Hast du dafür ein Tutorial oder so etwas zur Hand? Es würde mir eigentlich auch schon nur die Funktion zum connecten reichen ;) In der Doc steht ja eigentlich alles drin.
Wenn ich einfach mal den Connector/J nicht lade kommt (verständlicherweise) der Fehler, dass er keinen Treiber für jdbc:mysql://localhost:3306/database findet. (Per DriverManager.getConnection() connecte ich aktuell)
 
ne du hast recht, es gab mal nen alternativen Treiber, aber scheinbar eingestellt, neija dann hilft ja noch die Liste mit 3 LGPL konformen Einbindungsmöglichkeiten :biggrin:
 
[..]den Classpath im Windows ändern

Eher nicht, denn es wird 1. auf Linux laufen und 2. sollte man nichts mehr am System ändern müssen, damit es läuft.

[..], am dem aufruf der jar einen "optionalen" Classpath übergeben

Verstehe ich nicht so wirklich, also eine *.so Datei habe ich ja gar nicht ;) Was müsste denn in der drin stehen?
Und würde der Aufruf dann so lauten: java -Djava.library.path=./mysql-connector.so -cp -jar MeinProgramm.jar ?
Denn das sieht irgendwie sehr komisch aus ^^

oder in Java einen eigenen Classloader schreiben[..]

Hm.. sieht sehr kompliziert aus. ;)


Also selber habe ich auch schon vieles ausprobiert...
In der manifest eine Zeile Classpath: . lib/mysql-connector.jar hinzugefügt z.B.
Eigentlich sollte das ja funktionieren... Aber zu was ist denn der Classpath relativ? Zu dem Ort der JAR? Und greift der Classpath nur auf Sachen innerhalb der JAR zu oder außerhalb?
Also z.B. lib/mysql-connector.jar, wo sucht er die Datei? ./lib/mysql-connector.jar oder ./MeinProgramm.jar/lib/mysql-connector.jar oder ganz wo anders?

Beim starten der Anwendung habe ich auch schon den Classpath hinzugefügt, also: java -classpath ".:./lib/mysql-connector.jar" -jar MeinProgramm.jar