Webstart: java.io.FilePermission

Status
Nicht offen für weitere Antworten.

frostbyte

Aktives Mitglied
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:

Code:
<?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:
Code:
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?
 
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:
 
Ich habe die Bilder auch in das JAR Archiv getan, allerdings kann ich nicht darauf zugreifen.

Ich habe es jetzt über einen ClassLoader versucht:
Code:
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?
 
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!?
 
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?
 
Safari, Firefox unter OSX, Firefox unter Windows. Die zeigen einfach nur die Datei an.

Habe ich die vielleicht irgendwie falsch gespeichert?

Martin
 
Diese jnlp-Datei muss mit dem Programm "javaws" geöffnet werden. Das liegt im bin-Verzeichnis vom JRE.
 
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.
 
Ich habe da leider keinen Einfluss drauf, da mir der Server nicht gehört.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben