Cześć,
chcę napisać aplet, który będzie w przeglądarce wyświetlał obrazki. Obrazki znajdują się w katalogu images/, który jest w tym samym katalogu co plik html. Nie jest powiedziane ile jest plików w katalogu i jakie mają nazwy, można jednak założyć że na pewno są to obrazki.
Mam taki kod
package imageviewer;
import javax.swing.JApplet;
import java.awt.*;
import java.awt.image.*;
import java.io.File;
public class ImageViewerApp extends JApplet
{
public ImageViewerApp()
{
}
@Override
public void init()
{
File file = new File(getDocumentBase().getPath());
file = file.getParentFile(); //teraz jest w katalogu w ktorym mamy images/ i plik .html
file = new File (file.getPath() + "/images/");
images = file.list();
number = images.length;
current = 0;
for (String str: images)
System.out.println(str);
img = getImage(getDocumentBase(), "images/"+images[0]);
}
@Override
public void paint(Graphics gr)
{
this.setBackground(new Color(0,0,0,0));
gr.clearRect(0, 0, getSize().width, getSize().height);
gr.drawImage(img, 0, 0, this);
}
@Override
public boolean imageUpdate(Image img, int flags, int x, int y, int width, int height)
{
if ( (flags & ImageObserver.ALLBITS) == 0 )
{
showStatus("Ładowanie obrazu...");
return true;
}
else
{
showStatus("Obraz załadowamy!");
repaint();
return false;
}
}
protected int current, number;
protected Image img;
protected String[] images;
}
"Run file" w IDE uruchamia aplet i działa on dobrze, tzn. rysuje pierwszy obrazek z katologu. Jednak uruchomienie go appletviewerem z konsoli powoduje wygenerowanie wyjątku
$ appletviewer ImageViewerApp.html
java.security.AccessControlException: access denied (java.io.FilePermission /home/grzes/Programy/NetBeansProjects/ImageViewer/build/images read)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:342)
at java.security.AccessController.checkPermission(AccessController.java:553)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
at java.lang.SecurityManager.checkRead(SecurityManager.java:888)
at java.io.File.list(File.java:988)
at imageviewer.ImageViewerApp.init(ImageViewerApp.java:34)
at sun.applet.AppletPanel.run(AppletPanel.java:436)
at java.lang.Thread.run(Thread.java:636)
Widać że jest protest przy metodzie list z klasy File, nie wiem jednak jak to obejść. Proszę o pomoc w poprawieniu programu.