 |
 |
 |
 |
 |
 |
| |
Möchte gern eine ausführbare Jar Datei erstellen. Mein Programm besteht aus einer Klasse. Ich habe die Jar Datei folgendermaßen erzeugt:
Code: In Zwischenablage kopieren (nur IE)
die Datei wurde erfolgreich erzeugt. Dann habe ich die Java Dateien .class und. java hinzugefügt:
Code: In Zwischenablage kopieren (nur IE)
die Dateien wurden auch hinzugefügt.
Das Problem ist, dass wenn ich die Jar Datei per Doppelklick aufrufe, wird die Datei standardmäßig mit dem Toll javaw geöffnet. Nur passiert nichts auf meinen DK hin? Der Mauszeiger wird kurz zur Sanduhr und dann wieder zum Mauszeiger, aber es passiert nix. Ich habe die Datei über Eigenschaften mittels "Öffnen mit..." mit der DOS Konsole öffnen lassen, aber da öffnet sich nur die Konsole und das Arbeitsverzeichnis ist das, wo die jar Datei liegt.
Und lasse ich mit java.exe öffnen, erscheint kurz das DOS Fenster mit einer Meldung, die ich aber leider nciht entziffern kann, weil das Fenste sich sofort wieder schließt. Ich glaube aber nicht, dass das meine Ausgabe ist, soviel lässt sich erkennen.
Eigentlich möchte ich, dass die Jar Datei ein DOS Fenster öffnet und das Programm automatisch ausführt. Es sollte dann eine Ausgabe erzeugt werden. Es muss nicht unebdingt das DOS Fenster sein, aber irgendwas wo ich die Ausgabe sehen kann.
Normal rufe ich das Programm über die Konsole so auf und es funktioniert: Code: In Zwischenablage kopieren (nur IE)
Das ist mein erster Versuch mit Jar Dateien. Hier könnt ihr euch meine MF Datei anschauen:
Meine LogfileTool.mf sieht so aus:
Zitat: Manifest-Version: 1.0 Main-Class: LogfileTool
...und die JAR Datei runterladen und eine Testdatei die das Programm benötigt. Beide im selben Ordner ablegen. http://www.idee-c.de/test/TrafficTool.jar http://www.idee-c.de/test/internetlog.txt |
|
|
 |
 |
 |
| |
Antworten |
|
| |
1. Zum Testen probiert man das wohl am besten von der Konsole aus, dort bekommt man auch Fehlermeldungen angezeigt.
2. wenn ich
java -jar TrafficTool.jar
eingebe, funktioniert das Programm.
Abe ich erkenne nun das erste Wort, wenndas DOS Fenster sich nach dem DK kurz öffnet und wieder schleißt...Exception
Aber wie gesagt, das Programm funktioniert, wenn ich es mit den java Kommandos über die Shell aufrufe. Was für eine Exception könnte das sein? Ich glaube nicht, dass sie in Bezug auf meine Klasse steht, eher allg. mit der Java Umgebung. Aber was weiß ich...
3. Wird das denn auch mit "javaw -jar TrafficTool.jar" gestartet, oder lediglich mit "javaw TrafficTool.jar"?
4. Hm...alsooo, folgende Befehle hab ich über die DOS Zeile getestet....
1. Funktioniert (also bringt korrekte Ausgabe) java -jar LogfileTool.jar
2. java LogfileTool.jar Exception in Thread main java.lang.NoClassDefFoundError: LogfileTool.jar
3. Bringt eine Error Box. javaw LogfileTool.jar Could not find main class. Programm will exit.
4. Macht scheinbar nichts. Es wird eine neue Kommandozeile erzeugt. javaw -jar LogfileTool.jar
Interessant ist ja 2. und 3., aber wo liegt da mein Fehler? Evtl. an der Manifest Datei?
5. Also ich hab jetzt eine kleine grafische Ausgabe meinem Tool spendiert. Also mit JFrame, etc.
Die Ausgabe wird also nicht mehr auf der Kommandozeile ausgegeben, sondern in einem JFrame.
Das ganze funktioniert aber wieder nur, wenn ich das Programm über die Kommandozeile aufrufe, wie vorher eben auch.
Die JAR Datei bringt wieder nur kurz ein DOS Fenster mit der Exception Meldung und schließt sich sofort wieder.
Ich denke es wird die main class nicht gefunden, deswegen wird das Programm nicht ausgeführt über di eJAR Datei. Stimmt vielleicht was mit meiner Manifest Datei nicht?
6. Wieso? ich dachte mit java -jar jarfile läufts?
7. Das Problem ist, dass ich das Programm per Doppelklick zum laufen bringen möchte. Es läuft, wenn ich die JAR Datei über die Konsole manuell aufrufe, aber nicht per Doppelklick.
8. Und wie wärs dann mit einer Batchdatei7Shellskript, welches den Aufruf mit -jar macht?
9. Naja, das wäre ein uneleganter Umweg, schließlich gibt es für diesen Zweck ausführbare JAR Dateien, damit man Java Applikationen per Doppelklick starten kann.
10. Sowas gibts? Meine JAR Spezifikation sagt dazu kein Wort und meint im gegenteil man solls mit -jar starten.
11. Was heisst sowas gibt? Du kennst JAR Archive? Genau das sind die Dateien, die ein Java Programm per DK ausführbar macht. Man kann JAR Archive auch für Applets benutzen.
Aber es läuft jetzt! Das Problem war jetzt, nachdem ich die Ausgabe mit einer grafischen Oberfläche mache, dass ich die Eigenschaft "Öffnen mit..." der JAR Dateien nicht wider umgestellt habe. JAR Dateien werden standardmäßig mit der JRE geöffnet, es geht auch mit javaw, aber ich hatte java.exe noch eingestellt, von den vorherigen Tests.
Also Fazit:
Problem war: Meine JAR Datei lies sich nicht per DK ausführen. Mein Programm war so geschrieben, dass es eine Ausgabe auf die Standardausgabe macht. Fehlermeldung war hier: Exception in Thread main java.lang.NoClassDefFoundError: LogfileTool.jar
Lösung: Ich habe eine grafische Oberfläche geschrieben und die Ausgabe in ein JLabel geschrieben. Hat man die Standardeinstellung nicht verändert, also JAR Dateien mit jre öffnen bzw. mit dem Tool javaw, dann sollte das Programm per DK starten.
12. Hm, über dieses Windows staunt der Laie und der Experte wundert sich .. oder so ... 
|
|
|