Jar-Datei erstellen

landry

Grünschnabel
Hallo nette Leute.

Ich habe meine Klasse "Anmeldung.java" mit MySQL-Installationspfad erfolgreich getestet.

Auch meine Batch-Datei mit dem MySQL-Installationspfad lässt sich erflogreich testen ohne passwort angaben:
D:\Java\eigeneKlassen\jav11>java -cp ".;D:\Programme\MySQL\MySQL Tools for 5.0\
java\lib\mysql-connector-java-5.0.4-bin.jar" Anmeldung

Ich bekomme die Anmeldungsbenuzeroberfläsche(Personalverwaltungsdialog) und nach erfolgreich Anmeldung bekomme ich auch die Angestellterdatensoberfläsche.

nun mein Problem ist:

mein JAR-File hat ein Problem: Der test gib den Personalverwaltungsdialog aus und nach der Anmeldung bekomme ich keine Dialog-Oberfläsche mehr sondern eine Verbingunsaufbaumisslung in der Statusleiste:
Verbindungsaufbau misslungen: org.gjt.mm.mysql.Driver.

Mein IAR-File Aus dem Eclipse lässt sich auch gut testen.

Kann jemand mich helfen diese JAR-Datei zu erstellen so das diese Fehler-Meldung aufgehoben wird? Ich werde mich darauf freuen.
So habe ich Die Jar-datei mit CMD gepackt:
>jar cvfm esajav11.jar Manifest.txt *.class *.java

landry.
 
Hallo,

Mit den Informationen die du bis jetzt angegeben hast wird keiner in der Lage sein dein Problem zu ergründen. Du solltest dir vielleicht mal überlegen wann in deinem Code die Fehlermeldung ausgelöst werden kann, und dann überlegen wo die Unterschiede zwischen Aufruf über Bat und Aufruf als JAR sein könnten.
 
Zunächst erstmal Willkommen im Forum.

Was JDBC angeht hattest du wohl ein Nachschlagewerk aus älteren Tagen zur Hand.

Nun ... ich versuchs dir mal etwas einfacher zu erklären

1) Der Driver org.gjt.mm.mysql.Driver liegt lediglich aus Kompatibilitätsgründen dem aktuellen Release bei da es einige Applikationen gibt die diesen immer noch nutzen *obwohl sich mitlerweile einiges geändert hat*. Laut offizieller Aussagen der Hersteller sollte man wenn überhaupt nur diesen Driver nutzen : com.mysql.jdbc.Driver

2) Seit dem erscheinen dessen woher du diese Information hast hat sich einiges geändert. Der DriverManager von Java ist seit Version 1.4.2 fähig selbstständig alle zum Start der VM bekannten Driver zu laden. Damit entfallen ALLE Aufrufe wie Class.forName() und DriverManager.registerDriver(). Außerdem wurde die Implementierung dahingehend geändert das ein Driver der zum Start der VM nicht im CP verfügbar war so auch nicht mehr nachgeladen werden kann *z.B. über einen URLClassLoader*. Dafür benötigt man einen DummyDriver der zum Start der VM verfügbar ist und über den die Driver dann geladen werden. *Ich habe das ganze mal im Grundlagen-Forum beschrieben ... musst du mal ein bisschen suchen.*

3) Der Fehler wird daher kommen das wohl der Driver nicht richtig geladen wird. Es kann sein das ein Teil des Driver verfügbar und damit nutzbar ist ... aber ein anderer Teil erst nachgeladen werden muss was die VM veranlasst den gesamten Driver zum Crash zu bringen. Um die Ursache streiten sich immer noch einige.

4) Es ist möglich einen JDBC-Driver aus einem JAR innerhalb eines JARs zu laden ... aber auch ich habe damit Probleme und es is ne ganz schöne Fummelarbeit. Davon würde ich dir ERSTMAL abraten. Wenn du es dennoch versuchen möchtest frag am besten mal Thomas ... der sollte sich da auskennen.

5) Wenn du jetzt ein JAR erstellen möchtest was sowohl deine Applikation als auch den JDBC-Driver enhält, du aber auf die Möglichkeit des sog. JAR-in-JAR-loading verzichtest, musst du erst den JDBC-Driver entpacken und dann die entpackten Class-Files mit den Class-Files deiner Applikation wieder in ein neues JAR zusammenpacken.

6) Um dir bei deinen konkreten Fehlern helfen zu können brauchen wir
a) den kompletten StackTrace , den bekommst du in dem du in den catch-Block einfach exception.printStackTrace() schreibst
b) den betreffenden Source-Code


Ich hoffe ich konnte dir zumindest soweit erstmal etwas weiterhelfen.
Wenn nicht dann immer her mit Fehlermeldungen und Source ... das schaffen wir schon.
 
zu 4.) und 5.):
Wenn du die verwendeten Bibliotheken in Eclipse zum Build Path hinzufügst, dein Programm als runnable JAR file exportierst und beim Export unter "Library handling" den Punkt "Extract required libraries into generated JAR" auswählst, werden die JAR-Files (und class-Dateien) im Build Path automatisch so in "dein" JAR-File gepackt, so dass du auf die darin enthaltenen Daten ganz normal zugreifen kannst wie auf deine eigenen.

Was meinst du mit
Mein IAR-File Aus dem Eclipse lässt sich auch gut testen.
?
 
@genode
Ja ... da haben IDE's wieder den Vorteil das sie das im Hintergrund machen was man ohne selbst auf der Console machen muss ... aber WAS passiert bleibt ja dasselbe xD
 
Zurück