1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Applet-Security Problem (readFile)

  • AntiBit
  • 2. Juli 2004 um 00:13
  • Unerledigt
  • AntiBit
    13
    AntiBit
    Mitglied
    Reaktionen
    2
    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:

    Hätten uns Spiele wie Pac-Man in unserer Jugend beeinflusst, würden wir heute durch dunkle Räume irren, elektronische Musik hören und Pillen fressen.

  • a9bejo
    21
    a9bejo
    Mitglied
    Reaktionen
    42
    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

    lg, Benjamin Ferrari, bookworm.at

  • Ringding
    11
    Ringding
    Mitglied
    Reaktionen
    12
    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
    5
    gkittel
    Mitglied
    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?

    Gabriel

  • ghost dog
    6
    ghost dog
    Mitglied
    Reaktionen
    1
    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
    21
    a9bejo
    Mitglied
    Reaktionen
    42
    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?

    lg, Benjamin Ferrari, bookworm.at

  • Maximilian Rupp 27. Dezember 2024 um 12:06

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Benutzer online in diesem Thema

  • 1 Besucher

Rechtliches

Impressum

Datenschutzerklärung