# Ausführbare Dateien aus jar-Dateien verwenden



## nixnick (29. Apr 2010)

hallo,
ich bin gerade dabei, ein kleines config-tool für tinc zu schreiben ( tinc wiki , falls es jemanden interessiert...) und will dazu eine setup-datei ausführen, die ich im jar archiv dazugepackt hab. netbeans macht das bei mir automatisch, ich hab einfach einen unterordner src/<package>/resources gemacht, wo alle benötigten grafiken etc reinkommen.
bei bildern geht das mit 

```
getClass().getResourceAsStream("resources/bla");
```
 ganz gut, aber ich will ja nicht die rohdaten der install.exe haben, sondern sie ausführen. dazu (dachte ich) gibt es eine methode

```
public URL getResource(String name);
```
in dem Objekt, das von getClass() kommt.
diese returnt bei mir aber nur null, auch bei bildern oder textdateien.
mache ich irgendwas falsch oder ist es einfach nicht möglich, ein natives programm aus einer jar datei zu starten?
ich brauche selbiges nämlich auch, um mit

```
System.setProperty("javax.net.ssl.keyStore", "resources/jssecacerts");
```
einen https server zu benutzen, und weiß nicht, wie ich das sonst machen soll...
wenn ich das programm aus netbeans starte, werden die ungepackten class-files benutzt und alles funktioniert mit normalen pfadangaben, sobald ich eine .jar hab, geht das aber nicht mehr...
eine weitere methode wäre noch

```
"programm.jar!/resources/bla"
```
was dann aber nur geht, wenn eine jar benutzt wird und diese nicht umbenannt wurde.

hat irgendjemand eine idee, wie ich die ressourcen einbetten soll?

vielen dank im voraus,
nixnick


----------



## Wildcard (29. Apr 2010)

Du kannst zwar den Inhalt einer Resource im Jar einlesen, aber du kannst eine im Archiv verpackte ausführbare Datei nicht ausführen, da spielt das Betriebssystem nicht mit.


----------



## nixnick (29. Apr 2010)

also wären die einzigen möglichkeiten:
1)
dateien aus dem inputstream einzeln in einen tempordner kopieren und dann benutzen
2)
dateien direkt vom server nachladen (das programm wird eh per jnlp verbreitet), in einen tempordner kopieren und von da aus benutzen

sehe ich das so richtig?
muss ich das gleiche mit den zertifikaten machen, die für https nötig sind?
(nein, wir werden uns den key nicht für hunderte euro unterschreiben lassen)

grüße
nixnick


----------

