# Webstart: java.io.FilePermission



## frostbyte (20. Feb 2007)

Hallo,

Ich habe eine Art Spiel programmiert, das als eigene Applikation läuft. Ich habe mir zusammengelesen, dass Webstart hier das einfachste ist.

Dann habe ich mir von der SUN-Seite eine jnlp Datei besorgt und meine Daten reingeschrieben:


```
<?xml version="1.0" encoding="utf-8"?>
<jnlp spec="0.2 1.0"
      codebase="http://www.xxx.de/kk"
      href="kk.jnlp">
   <information> 
      <title>KK</title> 
      <vendor>xxx</vendor>
      <homepage href="http://www.xxx.de/kk/"/>
      <description>Ausweichspiel mit verschiedenen Bildern</description>
      <description kind="short">Ausweichspiel</description>
      <icon href="images/kk.jpg"/>
      <offline-allowed/> 
   </information> 
   <resources>
      <j2se version="1.3+" href="http://java.sun.com/products/autodl/j2se"/>
      <j2se version="1.3+"/>
      <jar href="kk.jar" main="true" download="eager"/>
   </resources>
   <application-desc main-class="Haupt"/>
</jnlp>
```

Dazu noch ein Jar-Archiv, das die Dateien enthalten sollte. 

Im meinem Projektordner habe ich einen Ordner pic, in dem die Bilder enthalten sind. Die Bilder werden so geladen:

```
fis = new FileInputStream("pic/wand1.gif");
wandI = javax.imageio.ImageIO.read(fis);
fis.close();
```

Allerdings bekomme ich, wenn ich die jnlp Datei von meinem Schreibtisch öffne eine Fehlermeldung:
access denied (java.io.FilePermission pic/wand1.gif read)

Wie kann ich das beheben?


----------



## Wildcard (20. Feb 2007)

Ist das jar Signiert?
Warum packst du die Bilder nicht auch in das jar?
Was nützen die Bilder denn anderen wenn sie lokal auf deiner Platte liegen?  :wink:


----------



## frostbyte (20. Feb 2007)

Ich habe die Bilder auch in das JAR Archiv getan, allerdings kann ich nicht darauf zugreifen.

Ich habe es jetzt über einen ClassLoader versucht:

```
fis = new FileInputStream(cl.getResource("pic/wand1.gif").getFile());
wandI = javax.imageio.ImageIO.read(fis);
fis.close();
```

Jetzt bekomme ich eine Fehlermeldung, dass er nicht auf die Datei zugreifen darf, aber jetzt einen kompletten Pfad tief im Inneren meiner Library/Cache/Java/...

Was muss ich machen, damit das Programm auf Bilder in seinem eigenen JAR-Archiv zugreifen darf?


----------



## Wildcard (20. Feb 2007)

ArthurDent hat gesagt.:
			
		

> Was muss ich machen, damit das Programm auf Bilder in seinem eigenen JAR-Archiv zugreifen darf?


Das ist erlaubt, der Fehler muss wo anders liegen.


----------



## frostbyte (20. Feb 2007)

Ich muss das ja irgendwie über den ClassLoader machen. Aber wie komme ich da ran?

Rein kommt ja der Dateiname, von mir vorgegeben, raus will ich ein Bild in Form eines Image haben.

Das muss doch gehen!?


----------



## Wildcard (20. Feb 2007)

getClass().getResource ist ok. Welche Exception kommt?


----------



## frostbyte (20. Feb 2007)

Diese Methode liefert eine URL zurück. Dann habe ich gemerkt, dass ImageIO.read() auch mit einer URL fertig wird und es klappt...

Danke für die Unterstützung.

Jetzt muss ich es nur noch schaffen, dass ein Link auf eine jnlp Datei nicht in der Anzeige endet sondern dass diese an Webstart weitergegeben wird.

Geht das irgendwie leicht?


----------



## Wildcard (20. Feb 2007)

Der Browser sollte das automatisch machen. Was benutzt du?


----------



## frostbyte (20. Feb 2007)

Safari, Firefox unter OSX, Firefox unter Windows. Die zeigen einfach nur die Datei an.

Habe ich die vielleicht irgendwie falsch gespeichert?

Martin


----------



## Wildcard (20. Feb 2007)

Java Plugin im Browser?


----------



## BarFooß (20. Feb 2007)

Diese jnlp-Datei muss mit dem Programm "javaws" geöffnet werden. Das liegt im bin-Verzeichnis vom JRE.


----------



## Wildcard (20. Feb 2007)

BarFooß hat gesagt.:
			
		

> Diese jnlp-Datei muss mit dem Programm "javaws" geöffnet werden. Das liegt im bin-Verzeichnis vom JRE.


Allerdings sollte ein richtig konfigurierter Browser das automatisch tun.


----------



## frischfisch (21. Feb 2007)

Der Server muss konfiguriert werden. Der Server muss den richtigen MIME-Typ (_application/x-java-jnlp-file_) mitschicken, sonst weis der Browser nicht, welche Anwendung (javaw.exe) gestartet werden soll.


----------



## frostbyte (21. Feb 2007)

Und wie sage ich meinem Server, dass dieser Header genommen werden soll? Mit PHP?


----------



## frischfisch (21. Feb 2007)

Welchen Server hast du, Apache? In der Regel müssen Konfigurationsdateien geändert werden.


----------



## Gast (21. Feb 2007)

Ich habe da leider keinen Einfluss drauf, da mir der Server nicht gehört.


----------

