Avatar billede baitianlong Nybegynder
29. januar 2005 - 21:03 Der er 5 kommentarer og
1 løsning

Hvorfor driller applet'er så meget

Jeg har en applet, der bruger nogle billeder på nogle knapper.

HTML:

<applet code="EditorWindow.class" width="600" height="500">
</applet>

Billederne har jeg lagt i samme mappe, men får denne fejl:

java.security.AccessControlException: access denied (java.io.FilePermission Bold16.gif read)
    at java.security.AccessControlContext.checkPermission(Unknown Source)
    at java.security.AccessController.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkRead(Unknown Source)
    at sun.awt.SunToolkit.getImageFromHash(Unknown Source)
    at sun.awt.SunToolkit.getImage(Unknown Source)
    at javax.swing.ImageIcon.<init>(Unknown Source)
    at javax.swing.ImageIcon.<init>(Unknown Source)
    at EditorWindow.<init>(EditorWindow.java:20)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at java.lang.Class.newInstance0(Unknown Source)
    at java.lang.Class.newInstance(Unknown Source)
    at sun.applet.AppletPanel.createApplet(Unknown Source)
    at sun.plugin.AppletViewer.createApplet(Unknown Source)
    at sun.applet.AppletPanel.runLoader(Unknown Source)
    at sun.applet.AppletPanel.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
java.security.AccessControlException: access denied (java.io.FilePermission Bold16.gif read)
    at java.security.AccessControlContext.checkPermission(Unknown Source)
    at java.security.AccessController.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkRead(Unknown Source)
    at sun.awt.SunToolkit.getImageFromHash(Unknown Source)
    at sun.awt.SunToolkit.getImage(Unknown Source)
    at javax.swing.ImageIcon.<init>(Unknown Source)
    at javax.swing.ImageIcon.<init>(Unknown Source)
    at EditorWindow.<init>(EditorWindow.java:20)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at java.lang.Class.newInstance0(Unknown Source)
    at java.lang.Class.newInstance(Unknown Source)
    at sun.applet.AppletPanel.createApplet(Unknown Source)
    at sun.plugin.AppletViewer.createApplet(Unknown Source)
    at sun.applet.AppletPanel.runLoader(Unknown Source)
    at sun.applet.AppletPanel.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

Sådan ser koden ud:

public class EditorWindow extends JApplet {
   
    private JTextPane tekst = new JTextPane();
    //Tekst formatterings knapper
    private JButton knapbold = new JButton(new ImageIcon("Bold16.gif"));
    private JButton knapitalic = new JButton(new ImageIcon("Italic16.gif"));
    private JButton knapunderline = new JButton(new ImageIcon("Underline16.gif"));

...osv osv osv

Hvad sker der?
Avatar billede arne_v Ekspert
29. januar 2005 - 21:06 #1
prøv og erstat

private JButton knapbold = new JButton(new ImageIcon("Bold16.gif"));

med:

private JButton knapbold = new JButton(new ImageIcon(getClass().getResource("Bold16.gif")));
Avatar billede baitianlong Nybegynder
29. januar 2005 - 21:22 #2
Det var sgu godt gættet :) Nu virker den...

Jeg plejer bare at uploade med explorer drag'n'drop, kan jeg uploade applet'er (binært) på den måde?
Avatar billede arne_v Ekspert
29. januar 2005 - 21:24 #3
Ved jeg ikke.

Jeg er typen som åbner en DOS box og bruger command line FTP ...

:-)
Avatar billede arne_v Ekspert
29. januar 2005 - 21:26 #4
Forklaringen er at:
  new ImageIcon("Bold16.gif") vil forsøge at læse filen fra fil systemet
  new ImageIcon(getClass().getResource("Bold16.gif")) vil forsøge at hente filen med HTTP
  (fra hvor applet class'en selv er hentet)

Og applet security manager tillader default ikke adgang til fil systemet (af ret indlysende årsager)
Avatar billede arne_v Ekspert
29. januar 2005 - 21:26 #5
og et svar
Avatar billede baitianlong Nybegynder
29. januar 2005 - 21:29 #6
Takker ! Jeg uploadede binært med CuteFTP og den virker fint :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester