那样的话,这句 “java.security.AccessControlException: access denied (java.io.FilePermission Blank1.GIF read)” 怎么解释?

解决方案 »

  1.   


    ro=new ImageIcon("Blank1.GIF");
    ge=new ImageIcon("shell2.ico");
    pr=new ImageIcon("Blank3.GIF");
    bt=new JButton();
    icon=new ImageIcon("Blank4.GIF");
    lb=new JLabel("Java",icon,JLabel.CENTER);放在
    init()
      

  2.   

    这样:
    try{
    ro=new ImageIcon(new URL(getCodeBase(),"Bullet.gif"));
    ....
    }catch(Exception e){
    e.printStackTrace();
    }
      

  3.   


    刚才我又试过了,已经可以确定是IE对Applet 的访问进行了限制,也就是Sun推出Java时所谓的“安全性”,那问题现在转变为,——————      Applet可以访问哪些资源,如果要访问自定义资源的话,应该怎么去实现?
      

  4.   

    在ie下运行applet是有很多限制的,例如不能通过socket连到非宿主机,等,如果要取得更高的权限,可以用签名的方式,具体网上有很多资料啦,找找看,祝你好运^_^
      

  5.   

    如果涉及到权限问题
    就要创建安全策略文件.java.policy 保存到你的用户目录下比如c:/Administrator/
    使用jdk下的bin目录里的policytool.exe工具创建,并添加读,...等权限
      

  6.   

    那么,在系统允许的范围内,Java是如何加载应用程序所需的资源的呢?     (声明一下,只要与问题相关,在某一方面解释的很清晰,最好有实例,都会给分的)
      

  7.   

    不通过配置applet是不能访问本地文件的,你的icon可能是以本地路径的形式进行装载的,所以提示你没有权限,可以使用url进行icon的装载,就像
    ********************************************************************
    febchen() ( ) 信誉:105  2004-11-20 22:01:00  得分: 0  
     
     
       这样:
    try{
    ro=new ImageIcon(new URL(getCodeBase(),"Bullet.gif"));
    ....
    }catch(Exception e){
    e.printStackTrace();
    }
      *******************************************
    如果必须访问本地文件,需要数字签名
     
      

  8.   

    你去下个tomcat,
    自己做主机,自己访问自己;图片可以用放在tomcat的root的文件夹.
    再把代码改一下就可以了,
    应该要用到public URL getCodeBase()
     Image getImage(URL url, String name)  这两个函数吧
      

  9.   

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.imageio.*;
    import java.io.*;public class Draw extends JApplet implements MouseMotionListener
    {
    Image image;
    int imageWidth;
    int imageHeight; 
    public void init()
    {  
    this.addMouseMotionListener(this);
    try {
    //setSize(new Dimension(400, 300));
    image = getImage(this.getCodeBase(), "Chocobo.jpg");//这边这样就可以啦
    } catch (Exception e) {
    e.printStackTrace();
    }
    }

    public void paint(Graphics g)
    {
    super.paint(g);
    g.drawImage(image,100,100,this);
    imageWidth = image.getWidth(this);
    imageHeight = image.getHeight(this);
    }

    public void mouseDragged(MouseEvent e)
    {
    }

    public void mouseMoved(MouseEvent e) 
    {
    int x = e.getX();
    int y = e.getY();
    if((x>=100)&&(x<=(100+imageWidth))&&(y>=100)&&(y<=(100+imageHeight)))
    {
    setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));
    }
    else
    setCursor(Cursor.getDefaultCursor());
    }

    public void dispose()
    {
    }
    }
      

  10.   

    谢谢 Squall1009(钰枫)(我思故我在) 大哥,问题已基本解决了,不过 回复人: stonecsdn(东东) ( ) 信誉:111  2004-11-21 13:03:39  得分: 0  
     
     
       
    不通过配置applet是不能访问本地文件的,你的icon可能是以本地路径的形式进行装载的,所以提示你没有权限,可以使用url进行icon的装载,就像
    ********************************************************************
    febchen() ( ) 信誉:105  2004-11-20 22:01:00  得分: 0  
     
     
       这样:
    try{
    ro=new ImageIcon(new URL(getCodeBase(),"Bullet.gif"));
    ....
    }catch(Exception e){
    e.printStackTrace();
    }
      *******************************************
    如果必须访问本地文件,需要数字签名
     谁能解释一下关于“数字签名”?
     
      

  11.   

    URLConnection可能也不行吧,因为要使用Socket,也算本地IO了。
    还是签个名好,JDK提供了keytool命令,生成X509的证书,然后导出公钥、密钥,然后用
    公钥、jarsigner命令签Applet Jar包
    具体看http://www.chinabs.net/java/default.asp?infoid=180
    其实不用那么复杂,签名后直接用就可以了,只不过客户端会弹个安全警告,同意即可。
      

  12.   

    应该是Permission的问题,用policytool设置一下!
      

  13.   

    Icon ro=new ImageIcon("Blank1.GIF");
    Icon ge=new ImageIcon("shell2.ico");
    Icon pr=new ImageIcon("Blank3.GIF");
    JButton bt=new JButton();
    Icon icon=new ImageIcon("Blank4.GIF");
    看到这几行了吗,Applet程序是不能访问文件的,除非你把你的IE的安全级别设置最低,否则就别想用Applet去直接访问文件的。
      

  14.   

    理想与现实为什么差距总是这么大?(^_^)一个再简单不过的程序都会出错,public class Test
    {
    public static void main(String args[])
    {
    System.out.print("This is a test");
    }
    }在IntelliaJ IDEA 4.5.1 中正常,但进入命令行:G:\MyDocument\Java\Test\src>javac Test.javaG:\MyDocument\Java\Test\src>java Test.class
    Exception in thread "main" java.lang.NoClassDefFoundError: Test/class用java -verbose Test.class 查看如下:G:\MyDocument\Java\Test\src>java -verbose test.class
    [Opened E:\j2sdk1.4.2\jre\lib\rt.jar]
    [Opened E:\j2sdk1.4.2\jre\lib\sunrsasign.jar]
    [Opened E:\j2sdk1.4.2\jre\lib\jsse.jar]
    [Opened E:\j2sdk1.4.2\jre\lib\jce.jar]
    [Opened E:\j2sdk1.4.2\jre\lib\charsets.jar]
    [Loaded java.lang.Object from E:\j2sdk1.4.2\jre\lib\rt.jar]
     
    ......(一些加载JDK运行库的过程)[Loaded java.lang.Math from E:\j2sdk1.4.2\jre\lib\rt.jar]
    [Loaded java.io.IOException from E:\j2sdk1.4.2\jre\lib\rt.jar]
    [Loaded java.io.FileNotFoundException from E:\j2sdk1.4.2\jre\lib\rt.jar]
    Exception in thread "main" java.lang.NoClassDefFoundError: test/class
    [Loaded java.lang.StackTraceElement from E:\j2sdk1.4.2\jre\lib\rt.jar]
    [Loaded java.lang.Shutdown from E:\j2sdk1.4.2\jre\lib\rt.jar]
    [Loaded java.lang.Shutdown$Lock from E:\j2sdk1.4.2\jre\lib\rt.jar]都要郁闷死了。谁知道这是为什么呀?
      

  15.   

    java Test就可以了,不要加class
      

  16.   

    回复  febchen()  :—————————————————————————————
    G:\MyDocument\Java\Test\src>java test
    Exception in thread "main" java.lang.NoClassDefFoundError: test (wrong name: Tes
    t)
            at java.lang.ClassLoader.defineClass0(Native Method)
            at java.lang.ClassLoader.defineClass(ClassLoader.java:537)
            at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:12
    3)
            at java.net.URLClassLoader.defineClass(URLClassLoader.java:251)
            at java.net.URLClassLoader.access$100(URLClassLoader.java:55)
            at java.net.URLClassLoader$1.run(URLClassLoader.java:194)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
            at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
            at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)G:\MyDocument\Java\Test\src>java test.class
    Exception in thread "main" java.lang.NoClassDefFoundError: test/class————————————————————————————————-关于classpath问题,我把所有可能的都包括了,
    .;E:\j2sdk1.4.2\jre\lib\charsets.jar;E:\j2sdk1.4.2\jre\lib\jce.jar;E:\j2sdk1.4.2\jre\lib\jsse.jar;E:\j2sdk1.4.2\jre\lib\plugin.jar;E:\j2sdk1.4.2\jre\lib\rt.jar;E:\j2sdk1.4.2\jre\lib\sunrsasign.jar;E:\j2sdk1.4.2\jre\lib\ext\dnsns.jar;E:\j2sdk1.4.2\jre\lib\ext\ldapsec.jar;E:\j2sdk1.4.2\jre\lib\ext\localedata.jar;E:\j2sdk1.4.2\jre\lib\ext\sunjce_provider.jar;
    另外:JAVA_HOME:E:\j2sdk1.4.2
          path:%JAVA_HOME%\bin
      

  17.   

    java TestTest第一个字母大写