Jens: Fehler beim laden von Grafiken in Java Applet

Hallo,

ich habe ein kleines Java Programm mit Hilfe von Eclipse geschrieben, dieses Programm möchte ich jetzt als Applet auf Websites laufen lassen. Wenn ichs in Eclipse als Applet laufen lass funzt es auch schon.
Es gibt nur ein Problem, wenn ich das Applet in eine Webseite einbinde, kommt immer ein java.security.AccessControlException: access denied (java.io.FilePermission [Hier steht dann der Grafik Pfad]) Fehler.
Er kann anscheinend die Grafiken nicht finden. Ich benutze einen relativen Pfad, also so etwas wie "images/image1.gif" in meinem Programm. Sollte er dann nicht das image1.gif finden, wenn ich einen images Ordner in dem Ordner erstelle in dem auch mein .class File liegt?

Mfg,
Jens

  1. Hallo Jens,

    Er kann anscheinend die Grafiken nicht finden. Ich benutze einen relativen Pfad, also so etwas wie "images/image1.gif" in meinem Programm. Sollte er dann nicht das image1.gif finden, wenn ich einen images Ordner in dem Ordner erstelle in dem auch mein .class File liegt?

    Ich denke schon dass er die Grafik finden kann - aber Applets ist es grundsätzlich nicht erlaubt, auf Dateien zuzugreifen. Das wäre viel zu gefährlich.
    Mit welchem Code öffnest du die Datei denn?
    In Applets muss man die Dateien AFAIK auf ganz bestimmte Art und Weise öffnen (sprich: laden).

    Gute Nacht

    Marc Reichelt || http://www.marcreichelt.de/

    --
    Linux is like a wigwam - no windows, no gates and an Apache inside!
    Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
    http://emmanuel.dammerer.at/selfcode.html
    1. Hallo Jens,

      Er kann anscheinend die Grafiken nicht finden. Ich benutze einen relativen Pfad, also so etwas wie "images/image1.gif" in meinem Programm. Sollte er dann nicht das image1.gif finden, wenn ich einen images Ordner in dem Ordner erstelle in dem auch mein .class File liegt?

      Ich denke schon dass er die Grafik finden kann - aber Applets ist es grundsätzlich nicht erlaubt, auf Dateien zuzugreifen. Das wäre viel zu gefährlich.
      Mit welchem Code öffnest du die Datei denn?
      In Applets muss man die Dateien AFAIK auf ganz bestimmte Art und Weise öffnen (sprich: laden).

      Gute Nacht

      Marc Reichelt || http://www.marcreichelt.de/

      Hier maln kurzer Codeausschnitt, den ich zum Testen gemacht habe:

      public class Test extends Applet {

      public void init(){
         ImageIcon icon = new ImageIcon("test.gif");
         JLabel test = new JLabel("Test!");
         test.setIcon(icon);
         add(test);
        }
      }

      Wenn ich das in Eclipse als Applet ausführe läd er die Grafik, im Browser nicht.
      Ich hab mir auch schon gedacht, dass ein Applet nicht einfach Dateien öffnen darf. Aber wenn ich das auf nem Webserver ausführe, dann soll er ja auch nicht die Image Datei auf der lokalen Festplatte des Benutzers sondern auf dem Server verwenden. Weisst du zufällig wie ich die Datei dann laden muss?

      Gruß,
      Jens

      1. Hallo Jens,

        Wenn ich das in Eclipse als Applet ausführe läd er die Grafik, im Browser nicht.
        Ich hab mir auch schon gedacht, dass ein Applet nicht einfach Dateien öffnen darf. Aber wenn ich das auf nem Webserver ausführe, dann soll er ja auch nicht die Image Datei auf der lokalen Festplatte des Benutzers sondern auf dem Server verwenden. Weisst du zufällig wie ich die Datei dann laden muss?

        Ein Blick in die <http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/ImageIcon.html#constructor_summaryJava Doku> zeigt mir, dass der Konstruktor von IconSize mit einem normalen String (in deinem Fall "test.gif") eine normale Datei laden möchte.
        Das schlägt fehl - schließlich darf er das nicht.

        Es gibt aber noch ein paar weitere Konstruktoren, nämlich z.B. den der ein Objekt vom Typ URL erwartet.

        Wenn mich jetzt nicht alles täuscht müsste es gehen, wenn du deine obere Zeile mit dem ImageIcon durch diese ersetzt (eventuell auch ein absoluter Pfad):
        ImageIcon icon = new ImageIcon(new URL("test.gif"));

        Gute Nacht

        Marc Reichelt || http://www.marcreichelt.de/

        --
        Linux is like a wigwam - no windows, no gates and an Apache inside!
        Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
        http://emmanuel.dammerer.at/selfcode.html
        1. Hallo nochmals,

          Ein Blick in die <http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/ImageIcon.html#constructor_summaryJava Doku> zeigt mir [...]

          Waah - der Link soll natürlich so aussehen: Java Doku

          ;-)

          Gute Nacht

          Marc Reichelt || http://www.marcreichelt.de/

          --
          Linux is like a wigwam - no windows, no gates and an Apache inside!
          Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
          http://emmanuel.dammerer.at/selfcode.html