# jar File startet nicht



## fischmir (19. Juli 2005)

Hallöchen,

nach vielem suchen und lesen, habe ich immernoch keine Antwort auf meine Frage bekommen...hoffentlich kann mir jemand von euch weiterhelfen.

Ich habe mit Fat-Jar aus eclipse heraus eine Jar-File erstellt. FatJar legt diese Datei standardmäßig in meinen Projektordner. Mein Projektordner hat ohn die jar-File eine Größe von 2,57 MB (incl libraries).

Die erzeugte jar-File hat ine grüße von 1,5 MB. Starte ich nun   AUS MEINEM PROJEKTORDNER  die jar-File, startet mein Programm einwandfrei.

Nehme ich die file hier heraus und lege sie beispielsweise auf das   DESKTOP  und versuche sie von dort aus zu starten, bleibt das ganze leider ohne Erfolg.

Ich dachte das das gerade der Sinn einer jar wäre. Alle Dateien in eine einzige Datei rein, die ich dann u.a. auch starten kann.

Habe ich einen Fehler gemacht oder habe ich den Sinn eines jar-Archives nicht verstanden?


----------



## elmato (19. Juli 2005)

Ich wuerde sagen du hast einen Fehler gemacht  was hast du den bei Classpath angegeben als du das jar mit FatJar erzeugt hast?


----------



## fischmir (19. Juli 2005)

hmm...nichts...muss ich da was eingeben  

Was genau macht denn der classpath?


----------



## torsch2711 (19. Juli 2005)

Hi fischmir,

   du müsstest das FatJar in den classpath eintragen, damit dein Jar dieses nutzen kann.
 Mit dem Classpath setzt du den Pfad zu deinen zu benutzenden klassen. Es langt allerdings nicht einfach den Pfad zu dem Jar einzubinden. Bei einem Jar-file musst du explizit das .jar im classpath erwähnen.

   Es funktioniert in deinem projekt ordner, weil das .jar welches du benötigst dort auch liegt.
   Du kannst das .jar auch in deinem jar einbinden und während der laufzeit darauf verweisen.
  Thomas Darimont hat hierzu eine interessante Sache im Forum gepostet.

  Edit: hier der Link: http://www.tutorials.de/tutorials208053.html&highlight=Jar
 hoffe das hilft dir.
   Gruss,

   Torsten


----------



## fischmir (19. Juli 2005)

Hey Thorsten,

nur das wir uns richtig verstehen: Fat-jar ist ein eclipse-plugin und keine jar die ich gebrauche...

Ich habe mir den Thread mal angeschaut, aber es ist (würde ich sagen) nicht das was ich suche.
Die Verweise auf die jar-Archive die ich gebrauche, habe ich doch bereits in der Manifest-Datei hinterlegt...Was soll ich denn dann noch in den Classpath eintragen?

Meine Manifest:

```
Manifest-Version: 1.0
Main-Class: BabelfischSWT
Class-Path: lib/swt.jar lib/swt-pi.jar lib/jaxen-core.jar lib/jaxen-jdom.jar lib/saxpath.jar lib/jdom.jar
```


----------



## torsch2711 (19. Juli 2005)

Hi Fischmir,

 sorry, hab das erst nicht so ganz gerafft gehabt 

 Wusste gar nicht das es so ein export tool gibt. Sowas hab ich nämlich auch schon (naja nicht ganz intensiv) gesucht.

 Was für eine Fehlermeldung erscheint denn?
 Oder startet es einfach nicht?


----------



## fischmir (19. Juli 2005)

letzteres...es startet einfach nicht...


----------



## torsch2711 (19. Juli 2005)

Hast du auch alle jar files in dein file eingepackt?


----------



## elmato (19. Juli 2005)

hmm, es sollte auch ohne Classpath gehen ich hab das mal ausprobiert, aber wieso schreibst du dir selber eine Manifest datei? Das macht FatJar fuer dich, vielleicht liegt es ja schon daran? ansonsten alle benoetigten Jar's mit in dein Jar aufnehmen


----------



## fischmir (20. Juli 2005)

Ich habe die generierte *.jar von Fat-Jar mit Winrar mal wieder entpacken lassen und dabei erkannt, das FatJar nicht meine Ordnerstruktur übernimmt...aber gut. Folgendes ist die MANIFEST.MF Datei die FatJar mir generiert hat:


```
Manifest-Version: 1.0
Created-By: Fat Jar Eclipse Plug-In
Main-Class: BabelfischSWT



Name: org/jdom/
Specification-Title: JDOM Classes
Specification-Version: 1.0
Specification-Vendor: jdom.org
Implementation-Title: org.jdom
Implementation-Version: 1.0
Implementation-Vendor: jdom.org

Name: org/jdom/input/
Specification-Title: JDOM Input Classes
Specification-Version: 1.0
Specification-Vendor: jdom.org
Implementation-Title: org.jdom.input
Implementation-Version: 1.0
Implementation-Vendor: jdom.org

Name: org/jdom/output/
Specification-Title: JDOM Output Classes
Specification-Version: 1.0
Specification-Vendor: jdom.org
Implementation-Title: org.jdom.output
Implementation-Version: 1.0
Implementation-Vendor: jdom.org

Name: org/jdom/adapters/
Specification-Title: JDOM Adapter Classes
Specification-Version: 1.0
Specification-Vendor: jdom.org
Implementation-Title: org.jdom.adapters
Implementation-Version: 1.0
Implementation-Vendor: jdom.org

Name: org/jdom/filter/
Specification-Title: JDOM Filter Classes
Specification-Version: 1.0
Specification-Vendor: jdom.org
Implementation-Title: org.jdom.filter
Implementation-Version: 1.0
Implementation-Vendor: jdom.org

Name: org/jdom/transform/
Specification-Title: JDOM Transformation Classes
Specification-Version: 1.0
Specification-Vendor: jdom.org
Implementation-Title: org.jdom.transform
Implementation-Version: 1.0
Implementation-Vendor: jdom.org

Name: org/jdom/xpath/
Specification-Title: JDOM XPath Classes
Specification-Version: 1.0
Specification-Vendor: jdom.org
Implementation-Title: org.jdom.xpath
Implementation-Version: 1.0
Implementation-Vendor: jdom.org
```

Ich finde darin keinen Class-Path Eintrag!
Meine Ordnerstruktur vorher war:
Projekt
   |---.settings
   |---build
   |---CVS
   |---doc
   |---ico
   |---lib
   |---src
In der ausgepackten FatJar-File ist es:
Projekt_fat
|---com
|------werken
|---------saxpath (Inhalt: 6class-Dateien)
|---META-INF (Inhalt: info.xml; MANIFEST.MF; LICENSE.txt)
   |---org
       |------eclipse
           |---------swt (13 Ordner (ich denke das swt.jar ausgepackt)
       |------jaxen
       |------jdom
       |------saxpath


Ich habe einen Ordner exe wo ich die jarFile drin habe und die swt-win32-3064.dll für das SWT.

Was kann ich noch machen?  

Gruß
Christian


----------



## torsch2711 (20. Juli 2005)

Hallo,

 also FatJar generiert eine main.jar welche mit gepackt wird in das jar.
 in diese Main jar werden deine klassen gepackt.

 Soviel dazu, dass du deine ordner struktur nicht findest.

 Zur Manifest datei: 

 Schon seltsam bei mir ist der Classpath richtig gesetzt. Hmm.

 Muss ich mir nochmal anschauen.

 Gruss, 
 Torsten


----------



## ferenchechler (31. Juli 2005)

Du verwendest die swt.jar. SWT benötigt die swt.dll (JNI).
Details findest Du unter http://fjep.sourceforge.net/fjepfaq.html

Viele Grüße,
  feri


----------

