1. Weiterleitung zu NetzLiving.de
  2. Forum
    1. Unerledigte Themen
  3. zum neuen Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Applet-Security Problem (readFile)

  • AntiBit
  • 2. Juli 2004 um 00:13
  • Unerledigt
Hallo zusammen,

das Informatik-Forum geht in den Archivmodus, genaue Informationen kann man der entsprechenden Ankündigung entnehmen. Als Dankeschön für die Treue bekommt man von uns einen Gutscheincode (informatikforum30) womit man bei netzliving.de 30% auf das erste Jahr sparen kann. (Genaue Infos sind ebenfalls in der Ankündigung)

Vielen Dank für die Treue und das Verständnis!
  • AntiBit
    Punkte
    1.712
    Beiträge
    297
    • 2. Juli 2004 um 00:13
    • #1

    Hoi! Also, ich bin grad an meinem ersten Applet und hab soeben Bekanntschaft mit den Security-Restrictions geschlossen. Weiß aber nicht wie ich die umgehen kann, also bitte um Hilfe.

    Ich schreibe das Applet in NetBeans und sehe es somit im Appletviewer am localhost.
    Die Zeile

    Code
    BufferedImage image = ImageIO.read(new java.io.File(filename));


    funktioniert in Standalone-Apps ja ganz normal, das Applet schmeisst mir aber eine

    Zitat

    java.security.AccessControlException: access denied (java.io.FilePermission C:\img\r_1.gif read)


    Exception.

    Wie kann ich denn die Bilddateien (sie liegen in einem best. Verzeichnis) einlesen?? Es sei noch zu sagen dass diese Lesefunktion in einer Hilfsklasse ausgeführt wird, nicht direkt in der Subklasse des Applets ... also kann ich mit applet-spezifischen Befehlen wie getImage() nichts anfangen.

    So bitte zu Hülf :distur:

  • a9bejo
    Punkte
    4.697
    Beiträge
    913
    • 2. Juli 2004 um 11:20
    • #2

    also ich glaube nicht das du ein bild in ein applet einladen kannst, ohne

    Code
    javax.swing.JApplet.getImage(URL url);


    oder das Äquivalent aus dem AWT zu benutzen.

    Code
    BufferedImage image = ImageIO.read(new java.io.File(filename));

    kann auf jedenfall nicht funktionieren, weil das würde die bilder ja vom client laden und ich nehme an, selbst wenn das erlaubt wäre, möchtest du sie eigentlich vom server nachladen.

    Du hast meiner Meinung nach 2 Möglichkeiten:

    I.)

    statt einem Applet Java Webstart verwenden: Das ist wahrscheinlich die bessere Lösung: Du behälst alle Vorteile eines Applets, aber ohne dessen Einschränkungen und Eigenarten.

    II.)

    eine instanz vom Applet an an die subklasse weitergeben.
    damit deine subklasse nicht vom applet 'abhängig' wird, kannst du ja ein interface benutzen...

    Java
    /*
     * Created on 02.07.2004
     *
     */
    package org.ferrari.tests;
    
    
    import java.awt.Image;
    import java.net.URL;
    
    
    /**
     * @author ferrari
     *
     */
    public interface ImageLoader {
        public Image loadImage(URL url);
    }
    Alles anzeigen

    ...das dein applet implementiert...

    Java
    /*
     * Created on 02.07.2004
     *
     */
    package org.ferrari.tests;
    
    
    import java.awt.Image;
    import java.awt.MediaTracker;
    import java.net.URL;
    
    
    import javax.swing.JApplet;
    
    
    /**
     * @author ferrari
     *
     */
    public class MyApplet extends JApplet implements ImageLoader{
    
    
        Logic l = new Logic(this);
    
        public Image loadImage(URL url){
            MediaTracker tracker = new MediaTracker(this);
            Image img = this.getImage(url);
            tracker.addImage(img,1);
            try {
                tracker.waitForAll();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            return img;
        }
    
    }
    Alles anzeigen

    ...und deine subklasse verwendet...

    Java
    /*
     * Created on 02.07.2004
     *
     */
    package org.ferrari.tests;
    
    
    import java.awt.Image;
    import java.net.URL;
    
    
    /**
     * @author ferrari
     *
     */
    public class Logic{
    
        ImageLoader loader;
    
        public Logic(ImageLoader loader){
           this.loader = loader;
        }
    
        public Image loadImage(URL url){
            return loader.loadImage(url);
        }
    
    }
    Alles anzeigen
  • Ringding
    Punkte
    1.237
    Beiträge
    244
    • 2. Juli 2004 um 17:58
    • #3

    Und das soll funktionieren? Wenn man die Restriktion so einfach umgehen könnte, wäre sie doch total sinnlos, oder?

  • gkittel
    Punkte
    190
    Beiträge
    38
    • 2. Juli 2004 um 19:18
    • #4

    Die Restriktion wird doch nicht umgangen, oder? Es wird doch nach wie vor JApplet.getImage() verwendet. Oder habe ich etwas übersehen?

  • ghost dog
    Punkte
    386
    Beiträge
    69
    • 2. Juli 2004 um 19:30
    • #5

    evntuell musst du dein applet zertifizieren lassen?
    ich glaube es gibt da auf der java HP ein spezielles für entwickler...

    viel glück!

  • a9bejo
    Punkte
    4.697
    Beiträge
    913
    • 2. Juli 2004 um 20:25
    • #6
    Zitat von Ringding

    Und das soll funktionieren? Wenn man die Restriktion so einfach umgehen könnte, wäre sie doch total sinnlos, oder?


    nein, denn

    Zitat von gkittel

    Die Restriktion wird doch nicht umgangen, oder? Es wird doch nach wie vor JApplet.getImage() verwendet. Oder habe ich etwas übersehen?

  • Maximilian Rupp 27. Dezember 2024 um 12:06

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

  1. Datenschutzerklärung
  2. Impressum