# Probleme mit jar Tool



## Mikma (24. Oktober 2003)

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


----------



## Thomas Darimont (24. Oktober 2003)

Servus!

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


```
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


----------



## jean luc (10. Dezember 2003)

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


----------



## Thomas Darimont (10. Dezember 2003)

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


----------



## jorgeHX (16. Januar 2005)

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?


----------



## Thomas Darimont (16. Januar 2005)

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


----------



## jorgeHX (16. Januar 2005)

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


```
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)
```


----------



## Thomas Darimont (16. Januar 2005)

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


----------



## jorgeHX (17. Januar 2005)

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


----------



## jorgeHX (17. Januar 2005)

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


----------



## Bernd1984 (17. Januar 2005)

Hallo,

     die Pfade zu den Bibliotheken gibst du in der Batch-Datei mit an.

     z.B.
     start javaw -Xmx256M -cp .;*D:\lib*\ChartDirector.jar;*D:\lib\*chartdir.lic;*D:\lib\*jlfgr-1_0.jar;*D:\lib\*PrintPreview.jar volleyball_trainer.VB_Start

     Du kannst auch relative Pfade benutzten.


----------



## jorgeHX (17. Januar 2005)

Morgen,
also in der Batch-Datei weiß ich wie das geht. Ich brauche die Hilfe für meine Jar-Datei....


----------



## jorgeHX (17. Januar 2005)

hat denn niemand eine Antwort? Wäre super dringend. Danke


----------

