# JAR-File & PDF



## Jens1219 (11. Nov 2011)

Hallo, 

ich habe ein Problem bezüglich Runable JAR Files: und zwar möchte ich, wenn ich auf einen Button drücke ein PDF öffnen. Starte ich das Programm mit Eclipse funktioniert das Ganze auch. Erstelle ich aber ein JAR File, passiert beim Klick des Buttons einfach garn nichts. 
Könnt ihr mir weiterhelfen. 
So sieht der Code bei mir bisher aus: 


```
try 
{
Process p = Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler User_Manual_aktuell.pdf");
p.waitFor();

} 
catch (IOException e) 
//etc.
```


----------



## Guybrush Threepwood (11. Nov 2011)

Mach's doch einfach so:

```
Desktop.getDesktop().open(new File("User_Manual_aktuell.pdf"));
```


----------



## Jens1219 (11. Nov 2011)

Vielen Dank für die schnelle Antwort!

Leider selbes Problem. In Eclipse lässt sich das wunderbar ausführen, als JAR File, keine Reaktion :-(...


----------



## Gast2 (11. Nov 2011)

Hast du das jar file mal auf der Konsole gestartet. Bekommst du da nen Fehler angezeigt?


----------



## Jens1219 (11. Nov 2011)

Ja, keine Fehler. 
Es liegt mit sicherheit am Pfad, er kann das PDF einfach nicht finden...


----------



## XHelp (11. Nov 2011)

Kann das sein, dass die PDF einfach nur IN der jar liegt?


----------



## Jens1219 (11. Nov 2011)

Also, in Eclipse liegt die PDF in meinem src Ordner. D.h. die pdf liegt später dann im JAR!!!

Ich habe das Ganze schon bei einem Bild erfolgreich einbinden können, nur beim PDF gibts Probleme: 


```
private Class<?> aClass = new Object().getClass(); /////
	private URL imgUrl = aClass.getResource("/1.jpg");///
	private ImageIcon bild = new ImageIcon(imgUrl); ////////
	private JLabel logoLabel = new JLabel(bild);
```

....


----------



## XHelp (11. Nov 2011)

Das wird nicht klappen. Die PDF muss außerhalb der jar liegen.


----------



## Jens1219 (11. Nov 2011)

Hmm, ok! Schade...

Danke für die Hilfe!!!


----------



## faetzminator (11. Nov 2011)

Du kannst natürlich auch zur Laufzeit das PDF aus dem Jar herausholen (und in einen Tempordner stecken) und dann öffnen, aber meist ist es einfacher, die Datei einfach ausserhalb des Jars zu verteilen


----------



## Jens1219 (11. Nov 2011)

Jetzt habe ich das JAR File und die PDF auf dem Desktop. Leider funktioniert es immer noch  nicht. Ich hab es jetzt folgendermaßen eingebunden: 


```
Desktop.getDesktop().open(new File("User_Manual_aktuell.pdf"));
```


----------



## Gast2 (11. Nov 2011)

Das funktioniert so nur wenn du dein Programm vom Desktop aus startest.


----------



## Jens1219 (11. Nov 2011)

Also ich hab das als Runnable JAR File exportiert. Sowohl das, als auch das PDF liegt auf dem Desktop. Wenn ich das JAR starte funktioniert der PDF aufruf nicht...


----------



## Gast2 (11. Nov 2011)

Wie startest du das JAR file denn?


----------



## Jens1219 (11. Nov 2011)

Naja, einfach doppelklick drauf, dann startet das Programm...


----------



## Gast2 (11. Nov 2011)

Dann starte das mal per Konsole, bekommst du ne Exception oder sonst irgendwas angezeigt? Bei mir klappt der Aufruf problemlos. Wenn das File nicht existiert fliegt ne Exception.


----------



## Jens1219 (11. Nov 2011)

Ah ja ok, er wirft eine Expetion: 

"Exception in thread "main" java.lang.NoClassDefFoundError: test/jar
caused by: java.lang.ClassNotFoundException: test.jar
..."


Warum wirft er die nicht in Eclipse...?


----------



## Gast2 (11. Nov 2011)

eine jar startet man so: 
	
	
	
	





```
java -jar test.jar
```
. Ein korrektes Manifest mit Main-Class Eintrag vorrausgesetzt, das generiert Eclipse dir aber wenn du die richtige Run Configuration auswählst.


----------



## Jens1219 (11. Nov 2011)

Ok, habs jetzt nochmal so in der Consol gestartet!
Folgende Exception: 

Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgument Exception: The file: User_Manual_aktuell.pdf doesnt't exist.

Das versteh ich nicht, ich habs wie oben implementiert, und das pdf liegt auf dem Desktop...


----------



## Gast2 (11. Nov 2011)

Von wo genau startest du das Programm? Poste mal das Kommando dass du ausführst.
Zusätzlich kannst du dir das working directory mal ausgeben lassen (System.getProperty("user.dir")), relativ zu dem Pfad wird dein PDF gesucht.


----------



## Jens1219 (11. Nov 2011)

Das JAR liegt direkt auf dem Desktop: 

- ich starte die Konsole und gehen auf die Desktop-Ebene "cd desktop"
- dann öffne ich das JAR File "java -jar test.jar"
- Das Programm öffent sich
- ich klicke den bestimmten Button, der die PDF (liegt auch auf Desktop)  öffnen soll, jedoch wird die 
  Exception geworfen
- Vorher lasse ich mir jedoch über den Button noch mit (System.getProperty("user.dir")) meinen Pfad
  ausgeben, der ist: C:\Users\name\desktop


----------



## Gast2 (11. Nov 2011)

Schaut eigentlich ganz gut aus. Aber Java lügt in der Regel sehr selten, wenn Java sagt dass die Datei nicht existiert, dann existiert die da nicht 
Hast du schonmal nen absoluten Pfad versucht?


----------



## Jens1219 (11. Nov 2011)

Ne hab ich noch nicht!

Wie kann ich denn den in JAVA verwenden? 
Bisher benutze ich ja: 

```
Desktop.getDesktop().open(new File("User_Manual_aktuell.pdf"));
```


----------



## Gast2 (11. Nov 2011)

Ja statt 
	
	
	
	





```
User_Manual_aktuell.pdf
```
 verwendest du halt 
	
	
	
	





```
C:/Users/name/desktop/User_Manual_aktuell.pdf
```


----------

