# Exportiertes JAR startet nicht



## Silent_Bob (17. März 2008)

Sers Leute,

hab folgendes Problem: hab ein relativ großes Projekt mit Datenbank-Treibern, das ich gern als jar exportieren würde. Habs erst mit der normalen Export-Funktion von Eclipse versucht und hab dann ein jar-File bekommen, das sich nicht öffnen lässt. Keine Fehlermeldung, es öffnet sich einfach nur nix.

Dann hab ich ein bissel recherchiert und habs dann mit dem fat-jar zu exportieren versucht, weil ich ich ja meine DB-Treiber auch im jar brauch. Nur kam ich dann auf genau dasselbe Ergebnis.

Such jetzt schon seit einiger Zeit und spür schon langsam den Frust.^^ 

Kann mir jemand von euch da helfen?

Danke im Voraus
Silent Bob


----------



## zeja (17. März 2008)

Starte dein Jar mal mit

```
java -jar deinjar.jar
```

Und schau mal ob du da Fehler bekommst.


----------



## Silent_Bob (17. März 2008)

Hab jetzt im cmd java -jar Desktop\versuch.jar eingegeben (hab das jar am Desktop liegen) und die Meldung "Unable to access jarfile versuch.jar" bekommen.


----------



## zeja (17. März 2008)

Leg das Jar mal in einen richtigen Ordner und wechsel in den Ordner und führ dann den Befehl aus.


----------



## Silent_Bob (17. März 2008)

Jetzt gibt er keinen Fehler mehr aus, er öffnet das jar aber auch nicht.
Also genauso, als ob ichs per Doppelklick öffnen würde.


----------



## zeja (17. März 2008)

Okay... hmm bist du sicher dass du die richtige MainClass angegeben hast? Oder hast du versehentlich eine Klasse mit einer leeren Main-Methode angegeben?


----------



## Silent_Bob (17. März 2008)

Na, ganz sicher die richtige. Habs ja auch zuerst mit dem normalen Eclipse-Export und dann mit fatjar probiert.


----------



## zeja (17. März 2008)

flo_hr hat gesagt.:
			
		

> Mit "java -jar Desktop\versuch.jar" kann das auch nicht gehen. Was ist denn das für ein Datei-Verweis.
> 
> Wenn das jar-File auf dem Desktop liegt, dann musst du auch den RICHTIGEN und KOMPLETTEN pfad angeben:
> 
> ...



Das stimmt ja nicht. Befindest du dich bereits im Ordner 
C:\Dokumente und Einstellungen\Florian\
kannst du mit 
java -jar Desktop\dist\SoftwareDB.jar
auch dein Jar aufrufen. Auch wenn man das normalerweise nicht macht... (Das user.dir entspricht hier dann z.B. C:\Dokumente und Einstellungen\Florian\)


----------



## zeja (17. März 2008)

Dann schau dir doch mal an was

```
java -verbose:class -jar deinjar.jar > log.txt
```
in die Datei log.txt ausgibt. Guck mal ob deine Klasse darin geladen wird.

Und füg mal ein einfaches System.out.println an den Anfang deiner main-Methode ein. Dann such danach in der log-Datei. Vielleicht tritt auch eine Exception auf die du fängst aber nicht behandelst/anzeigst.


----------



## Silent_Bob (17. März 2008)

Genauso wie vorher, kein Fehler, aber auch keine Ausgabe.  
Ich hab mal das jar entpackt und nachgeschaut, hab da kein log.txt gefunden. Die sollte doch im jar sein, oder hab ich was falsch verstanden?


----------



## flo_hr (17. März 2008)

zeja hat gesagt.:


> Das stimmt ja nicht. Befindest du dich bereits im Ordner
> C:\Dokumente und Einstellungen\Florian\
> kannst du mit
> java -jar Desktop\dist\SoftwareDB.jar
> auch dein Jar aufrufen. Auch wenn man das normalerweise nicht macht... (Das user.dir entspricht hier dann z.B. C:\Dokumente und Einstellungen\Florian\)



ja ok da hast du recht


----------



## zeja (17. März 2008)

Silent_Bob hat gesagt.:


> Genauso wie vorher, kein Fehler, aber auch keine Ausgabe.
> Ich hab mal das jar entpackt und nachgeschaut, hab da kein log.txt gefunden. Die sollte doch im jar sein, oder hab ich was falsch verstanden?



Wie soll die denn ins Jar reinkommen? Die liegt in dem Ordner in dem du dich mit der Konsole befindest.

Ne Ausgabe bekommst du so nicht mehr, die wird in die Datei umgeleitet.


----------



## Silent_Bob (17. März 2008)

Ja, meine main-Klasse wird geladen ( [Loaded grafik.GUI from...] ).


----------



## zeja (18. März 2008)

Dann kommentier doch mal die main-Methode aus und schreib dir eine die nur was auf der Konsole ausgibt und schau mal ob das klappt.


----------



## Silent_Bob (18. März 2008)

Nein, funkt auch nicht. Vielleicht hab ich ja irgendwas bei den Einstellungen falsch gemacht?

Beim normalen Eclipse-Export mach ichs so:

1. Bildschirm:
Projekt anwählen, Export all output folders for checked Projects und Export java source files and resources sind aktiviert

Bei Path hab ich den Workspace.

Bei den Options hab ich Compress the Contents... aktiviert.

2. Bildschirm: Lass ich alles so, wies is.

3. Bildschirm: Veränder ich auch nichts, nur die Main class geb ich an.

Hab ich da irgendwas vergessen oder falsch angekreuzt?


----------



## zeja (18. März 2008)

Kopier mal diese Klasse (meinen Post zitieren, dann das zwischen den Java-Tags kopieren) und paste sie in einen eclipse Source-Folder. Das sollte gehen.


```
package de.tutorials;

public class HelloWorld {

	public static void main(String[] args) {
		System.out.println("Hello World: " + System.getProperty("user.dir"));
	}

}
```

Dann rechtsklick auf diese Java-Datei, Export - Jar File
Auf der ersten Seite:
Haken bei Export generated class files and resources
und Compress the contents of the Jar file.
Sonst keine Haken, nur noch angeben wo es hin exportiert werden soll.

Zweite Seite:
Bei den ersten beiden nen Haken

Dritte Seite:
Generate the manifest file
Seal some packages
Main-Class: de.tutorials.HelloWorld

Finish.

Wenn du das ausführst bekommst du eine Ausgabe.


----------



## Silent_Bob (18. März 2008)

Hab inzwischen mal umdisponiert und ein Applet aus dem JFrame gemacht, das in Eclipse auch läuft, wie es laufen soll. Hab dazu unter anderem auch main() entfernt, da man die in einem Applet ja eh nicht braucht.

Dann wieder die alte Leier - exportieren mit fatjar, dieses Mal aber ein Fehler, wenn ich
_java -jar versuch.jar_ 
in die Konsole eingeb, nämlich: 
_Exception in thread "main" java.lang.NoSuchMethodError: main_

Brauch ich in einem Applet jetzt doch ein main?

So langsam gehts ma echt am...


[EDIT] Sry zeja, hab deinen Post nicht gesehen. Probier ich gleich aus.


----------



## Silent_Bob (18. März 2008)

Habs jetzt so probiert: 

Einmal ein neues Projekt mit dieser Klasse angelegt und einmal in einen Ordner im bestehenden Projekt von mir eingefügt. Danach hab ich genau das gemacht, was du geschrieben hast, über fatjar hab ichs auch probiert. Ausgabe gabs trotzdem nicht.

Oder hast du mit Source-Ordnern was anderes gemeint?


[Edit] Wollt mal schauen, ob bei mir am Compiler grundsätzlich was falsch konfiguriert is oder Ähnliches und deshalb probiert, ein älteres Programm von mir als jar zu exportieren, da hats funktioniert.

Ich hab jetzt nochmal das Projekt als Applet mit fatjar exportiert. Zwar startet das jar wieder nicht, aber wenn ich in die Konsole java -jar versuch.jar eingeb, dann gibt er eine System.out.println-Zeile aus main() aus.


----------

