|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jan 2007
Messaggi: 1237
|
[JAVA] Applet fa le bizze
Ho scritto una galleria fotografica in Java, l'ho poi adattata sotto forma di applet e funziona (sotto Eclipse e anche da riga di comando)!
Inserendola in una pagina html e lanciando il browser saltan fuori gli errori: java.security.AccessControlException: access denied (java.io.FilePermission data/data.txt read) at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323) at java.security.AccessController.checkPermission(AccessController.java:546) at java.lang.SecurityManager.checkPermission(SecurityManager.java:532) at java.lang.SecurityManager.checkRead(SecurityManager.java:871) at java.io.FileInputStream.<init>(FileInputStream.java:100) at java.io.FileInputStream.<init>(FileInputStream.java:66) at FotoGallery.azioniFile(FotoGallery.java:91) at FotoGallery.init(FotoGallery.java:47) at sun.applet.AppletPanel.run(AppletPanel.java:424) at java.lang.Thread.run(Thread.java:619) Codice:
public class FotoGallery extends JApplet implements ActionListener{
JButton b1, b2, b3, b4;
JComboBox cb;
JPanel cmd;
JLabel pic;
Container c;
String[] titoli;
ImageIcon img;
Vector<String> nomi = new Vector<String>();
Vector<Integer> numeri = new Vector<Integer>();
int currentPhoto = 0;
public FotoGallery(){}
public void init(){
azioniFile();
nomi.add(titoli[0]);
nomi.add(titoli[1]);
nomi.add(titoli[2]);
numeri.add(4);
numeri.add(3);
numeri.add(2);
b1 = new JButton("<");
b2 = new JButton("<<");
b3 = new JButton(">");
b4 = new JButton(">>");
cmd = new JPanel();
pic = new JLabel();
c = getContentPane();
cb = new JComboBox(titoli);
cb.setSelectedIndex(-1);
cb.addActionListener(this);
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
b4.addActionListener(this);
cmd.add(b1);
cmd.add(b2);
cmd.add(cb);
cmd.add(b3);
cmd.add(b4);
c.add(cmd, BorderLayout.NORTH);
c.add(pic);
setSize(800,600);
}
public void azioniFile(){
/* Acquisizione informazioni da "data/data.txt" */
String riga = "", nome;
int num;
FileInputStream in = null;
try{
in = new FileInputStream("data/data.txt");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
System.out.println("File aperto!");
InputStreamReader input = new InputStreamReader(in);
BufferedReader reader = new BufferedReader(input);
//...varie operazioni sul file ...//
titoli = new String[nomi.size()];
for(int z = 0; z < nomi.size(); z++){
titoli[z] = nomi.elementAt(z);
}
}
public void actionPerformed(ActionEvent e) {
if(e.getSource() == b3){
if( currentPhoto == numeri.elementAt(cb.getSelectedIndex()) )
currentPhoto = 1;
else currentPhoto++;
aggiornaLabel(cb.getSelectedIndex(), currentPhoto);
}
//...operazioni analoghe per b1,b2,b4...//
else if(e.getSource() == cb){
caricaAlbum(cb.getSelectedIndex());
}
}
public void caricaAlbum(int index){
System.out.println("Entro in caricaAlbum " + index);
currentPhoto = 1;
aggiornaLabel(index, currentPhoto);
}
public void aggiornaLabel(int index, int foto){
ImageIcon icon = creaIcona(index + "/" + foto + ".jpg");
pic.setIcon(icon);
pic.setHorizontalAlignment(JLabel.CENTER);
if (icon != null) pic.setText(null);
else pic.setText("Impossibile trovare la pagina");
}
public static ImageIcon creaIcona(String path) {
URL imgURL = FotoGallery.class.getResource(path);
if (imgURL != null) {
return new ImageIcon(imgURL);
}else{
System.err.println("Impossibile trovare il file: " + path);
return null;
}
}
}
Avete qualche idea? Magari è uno dei problemi più ricorrenti per le applet, non so.. Ultima modifica di royaleagle : 25-11-2008 alle 18:12. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jan 2007
Messaggi: 1237
|
Dunque il problema è proprio quella lettura del file data.txt : non è proprio possibile leggere (soltanto leggere) un file? Va bene che il java è un linguaggio sicuro, però..
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Dovresti leggerti qualcosa sulle Applet: io non ne ho mai realizzata una fin'ora, però so che funzionano come sand-box e non credo tu possa da una Applet accedere tanto facilmente a dati contenuti nel pc client di chi la usa (per ovvie ragioni).
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Dec 2001
Città: Napoli
Messaggi: 3249
|
Le applet hanno delle limitazioni sui client su cui vengono eseguite,
tra queste limitazioni non possono accedere ai file di sistema. Per fare quello che vuoi devi fare una firma digitale per l'applet. Leggiti un pò questo link mi sembra la via più semplice, anche se cmq è un argomento vasto. http://www.max74.it/blog/2007_11_01_archive.html Spero di esserti stato di aiuto
__________________
Codice:
Concluso con[OK BAD]: ercagno,Claudio, Antopx, Lunaticgate, Deuced, Nicola5154,nEA[x2], Lupino.86, ironfrank, Marxio, luke10, Sniper86, alexis1980, Andrea16v[x3], Red_Rose, mitsuhashi1, antanio, Rinos, flavix25, geolite30, cianuro, spzerosp, GoldFinder, Zagor4, Mercurius00, Leland Gaunt, Iron10, tyco74, Clatit, PaPuAsja, onka, jing13, _19Fabio85_, Murakami, raizen89, dinigio63, ncerozz, rtype, Isotattico, vinz86, valdisteadsl, battalion75 Ultima modifica di franklyn : 26-11-2008 alle 12:27. |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jan 2007
Messaggi: 1237
|
Io ho provato a mettere in una cartella il jar firmato (dove dentro c'è anche il famoso data.txt nella cartella data) e il foglio html: ed ecco l'errore.
Cioè, io non leggo/scrivo da disco (o mi sbaglio?) ma leggo dal file che sarà presente nel mio spazio web! |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jan 2007
Messaggi: 1237
|
Ho risolto il problema relativo al file, e puntuale è arrivato un altro problema: StringIndexOutOfBoundsException..
Possibile che questo succeda solo caricando l'applet nel mio spazio web? Da locale mi funziona tutto. |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Jan 2007
Messaggi: 1237
|
Ok ho risolto!
Un grande ringraziamento a ^TiGeRShArK^ e agli altri che mi hanno risposto. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:44.



















