Probleme mit jar Tool

Mikma

Grünschnabel
Hallo Forum,

ich bin neu in der Java-Programmierung und habe Probleme mit dem jar tool.

Hier beschreibe ich mal mein Vorgehen.
Vielleicht fällt jemanden auf, was ich falsch mache.

Über dos gehe ich in das Verzeichnis wo die benötigten Class-dateien liegen.

jar cvf Test.jar Application1.class Frame1.class

Nun wird ja die .jar Datei erzeugt.
Im Datei-Explorer gebe ich nun an das alle .jar dateien mit dem jdk-Programm java.exe geöffnet werden sollen.

Wenn ich nun einen Doppelklick auf die .jar Datei mache, geht aber nur kurz ein Dos-Fenster auf und sofort wieder zu.

Das wars. Ihr müsst zugeben, das ich damit niemanden so richtig beeindrucken kann, oder? ;-)

Ich weiss, das man da auch noch irgendwas mit dem Manifest machen kann, aber so richtig weiss ich nicht was meine Doku(Java ist auch eine Insel) mir darüber sagen will. Zudem da nur ein Beispielfür das JDK 1.1 ist.


Wäre toll wenn mir noch jemand helfen könnte?

Gruss
Mikma
 
Servus!

Um ein ausführbares Jar zu erstellen musst du wie du schon richtig gelesen hast erst noch eine Manifest datei erstellen ...

Code:
public class HalloTest{
    public HalloTest(){}
    public static void main(String[] args){
        System.out.println("Hallo Welt!");
    }
}

Dann :

1) javac HalloTest.java

2) java HalloTest

3) edit Manifest.txt

Inhalt Manifest.txt ->

Main-Class: HalloTest


Denke an das Leerzeichen nach dem Doppelpunkt ...

4) jar -cvfm Test.jar Manifest.txt HalloTest.class

5) java -jar Test.jar

Ausgabe:
Hallo Welt!


Also ich finde Java Insel Beispiel Klasse!
http://www.galileocomputing.de/open...50002.htm#RxxxJava250002256DasArchivformatJar

Gruß Tom
 
Hi,
ich habe das mal mit meheren Dateien probiert, dann sagt mit Windows immer:
Could not find the main class. Program will exit.

Habe aber in der Manifest Datei die entsprechende Datei angegeben.
Was mache ich falsch?
SIMON
 
Servus!

Versuchs mal mit nem anderen Editor als Notepad ...
es kann sein, dass innerhalb einer Manifest Datei kein \r\n sondern
nur \n stehen darf ...

Gruß Tom
 
Hallo Tom,
ich habe das so gemacht. Allerdings erscheint mir jetzt immer die Fehlermeldung "Failed to load Main-Class manifest attribute from..." wenn ich den Befehl java -jar Start.jar ausführe

in meiner Manifestdatei steht: Main-Class: Uni-VersionJAR/volleyball_Trainer/VB_Start
VB_Start ist die Startklasse. Alle Dateien inklusive Manifestdatei liegen im Ordner Uni-VersionJAR

Was mache ich denn falsch?
 
Hallo!

Alles was im Main-Class: Attribut angegeben wird wird als voll Qualifizierter Klassenname interpretiert. Also ein Eintrag wie
Main-Class: foo.bar.system.core.Main
Sagt aus, dass die Klasse mit der main Methode Main heißt und im package
foo.bar.system.core liegt.
Also sucht die Java-Laufzeit im jar-Root nach dem Verzeichnis foo\bar\system\core und dort nach der Klasse Main die dann auch die passende package-Deklaration (foo.bar.system.core) aufweisen.

Gruß Tom
 
Hallo Tom,
bei mir tritt jetzt der folgende Fehler auf. Ich weiß nicht woran das liegt. Außerdem muss ich noch Bibliotheken hinzufügen. Ich hoffe, dass das nicht so problematisch ist.
Danke

Code:
C:\Programme\Java\jdk1.5.0\bin>java -jar Easy2Coach.jar
Exception in thread "main" java.lang.NoClassDefFoundError: Uni-VersionJAR/volley
ball_trainer/VB_Start (wrong name: volleyball_trainer/VB_Start)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:12
4)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
        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)
 
Hallo!

Hast du in der Klasse VB_Start im Quellcode oben auch
package Uni-VersionJAR.volleyball_trainer;
stehen? -> Kann nicht sein, da ein "-" in einem package-Namen nicht erlaubt ist.
Weiterhin MUSST du einmal "enter" nach dem dem Main-Class: Attributwert drücken.
Wie gesagt alles was nach dem Main-Class: Attribut kommt gehört zum voll qualifizierten Klassennamen. Weitere Bibliotheken kannst du mit dem Class-Path Attribut angeben.
Näheres dazu findest du hier:
http://java.sun.com/j2se/1.5.0/docs/guide/jar/index.html

Gruß Tom
 
Zuletzt bearbeitet:
Guten Morgen,
also ich erstelle mir eine Jar-Datei mit deinem oben genannte Befehlen:

jar -cvfm Test.jar Manifest.txt HalloTest.class

Anschließend sehe ich aber, dass eine Rar-Datei gepackt wurde Ich dachte, dass ich eine Datei erhalte, die ich mit Doppelklick starten kann?
Mache ich noch immer etwas falsch?
Danke

Wenn ich das Programm in der Dos-Box mit deinem Befehl:
java -jar Test.jar
starte, so läuft das Prog einwandfrei
 
Also, dass mit der jar-Datei habe ich soeben gelöst....
Jetzt ist bei mir das Problem, dass ich noch eigene Bibliothekspfade angeben muss. Wo schreibe ich die denn hin? In die Manifest-Datei?

Also in meiner bat-Datei gebe ich den Pfad immer so an:

cd bin
start javaw -Xmx256M -cp .;ChartDirector.jar;chartdir.lic;jlfgr-1_0.jar;PrintPreview.jar volleyball_trainer.VB_Start

Jetzt will ich ChartDirector.jar;chartdir.lic;jlfgr-1_0.jar;PrintPreview.jar irgendwie auch bei meiner jar-Datei hinzufügen.

Weiß da jemand Rat?
Tausend Dank
 
Zurück