Applet i uprawnienia

0

Witam. Otóż mam problem z uprawnieniami do operacji w aplecie

package appletclass;

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JApplet;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class AppletClass extends JApplet
{
    public void init()
    {
        EventQueue.invokeLater(new Runnable()
        {
            @Override public void run() 
            {
               add(new AppletPanel());
               JPanel panel=new JPanel();
               panel.add(new JLabel("cso"));
               add(panel,BorderLayout.NORTH);
               File f=new File("cs");

            }
        });
    }
}

class AppletPanel extends JPanel
{
    public AppletPanel()
    {
        try
        {
            img=ImageIO.read(new File("image.png"));
        }
        catch(IOException e)
        {
            e.printStackTrace();
        }
    }

    @Override public void paintComponent(Graphics g)
    {
        super.paintComponent(g);

        Graphics2D g2=(Graphics2D) g;
       g2.drawImage(img, 0,0, 300, 300, null);  
        g2.drawString("sdasd",100, 200);

    }

    private Image img;
}

i błąd

Exception in thread "AWT-EventQueue-1" java.security.AccessControlException: access denied ("java.io.FilePermission" "image.png" "read")
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:366)
at java.security.AccessController.checkPermission(AccessController.java:555)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
at java.lang.SecurityManager.checkRead(SecurityManager.java:888)
at java.io.File.canRead(File.java:728)
at javax.imageio.ImageIO.read(ImageIO.java:1300)
at appletclass.AppletPanel.<init>(AppletClass.java:42)
at appletclass.AppletClass$1.run(AppletClass.java:25)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:705)
at java.awt.EventQueue.access$000(EventQueue.java:101)
at java.awt.EventQueue$3.run(EventQueue.java:666)
at java.awt.EventQueue$3.run(EventQueue.java:664)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:675)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

Próbowałęm podpisywać aplett w netbeans ale dalej to samo.

0

Musisz podpisać applet żeby móc tak zrobić.

0

Jaki ma sens żeby w aplecie tak odczytywać pliki graficzne? Użytkownik apletu i tak tych plików nie będzie miał.

img = getImage(getCodeBase(),"image.png");
0

To jest tylko przykład. Wiem o tym chce tylko zobaczyć jak nadawać uprawnienia apletowi do operacji których standardowo nie może wykonać

0

Jak już @Shalom napisał, podpisz aplet. Testuj go w przeglądarkach, nie w NetBeansie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0