java.security.AccessControlException异常一般怎么处理

灌木 2013-05-26 09:41:23
写的一个Applet小程序,在读入一个图片时,出现了java.security.AccessControlException异常,怎么处理。
Exception in thread "Thread-3" java.security.AccessControlException: access deni
ed ("java.io.FilePermission" "\D:\java\javaAppletExample\ch2\html\Sunset.gif" "r
ead")
at java.security.AccessControlContext.checkPermission(AccessControlConte
xt.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 sun.awt.image.URLImageSource.<init>(URLImageSource.java:55)
at sun.applet.AppletImageRef.reconstitute(AppletImageRef.java:51)
at sun.misc.Ref.get(Ref.java:64)
at sun.applet.AppletViewer.getCachedImage(AppletViewer.java:395)
at sun.applet.AppletViewer.getImage(AppletViewer.java:390)
at java.applet.Applet.getImage(Applet.java:274)
at java.applet.Applet.getImage(Applet.java:296)
at Ripple.run(Ripple.java:47)
at java.lang.Thread.run(Thread.java:722)
源程序47行是:
image = getImage(getDocumentBase(),name);
...全文
1974 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Emily_cao 2015-06-29
  • 打赏
  • 举报
回复
追问一下,出现AccessControlException,需要修改jdk//lib/security/java.‍policy文件还是,jdk/jre//lib/security/java.‍policy文件
灌木 2013-06-08
  • 打赏
  • 举报
回复
引用 2 楼 jintianhen1 的回复:
因为浏览器只能访问一定目录下的文件,不是可以访问所有的文件,Applet没有那么高的权限。所以解决方案有两个: 1,通过签名来解决: 2,通过更改java/lib/security/java.‍policy文件来实现。当然这种方式肯定不安全。具体做法是:将下面内容添加到java.policy文件中: ‍ permission java.util.PropertyPermission "user.dir ", "read "; permission java.util.PropertyPermission "user.home ", "read "; permission java.util.PropertyPermission "java.home ", "read "; permission java.util.PropertyPermission "java.class.path ", "read "; permission java.util.PropertyPermission "user.name ", "read "; permission java.lang.RuntimePermission "accessClassInPackage.sun.misc "; permission java.lang.RuntimePermission "accessClassInPackage.sun.audio "; permission java.lang.RuntimePermission "modifyThread "; permission java.lang.RuntimePermission "modifyThreadGroup "; permission java.lang.RuntimePermission "loadLibrary.* "; permission java.io.FilePermission " < <ALL FILES> > ", "read "; permission java.io.FilePermission "${user.dir}${/}jmf.log ", "write "; permission java.io.FilePermission "${user.home}${/}.JMStudioCfg ", "write "; permission java.net.SocketPermission "* ", "connect,accept "; permission java.io.FilePermission "C:\WINNT\TEMP\* ", "write "; permission java.io.FilePermission "C:\WINNT\TEMP\* ", "delete "; permission java.awt.AWTPermission "showWindowWithoutWarningBanner "; permission javax.sound.sampled.AudioPermission "record "; permission java.net.SocketPermission "- ", "listen "; permission java.net.SocketPermission "- ", "accept "; permission java.net.SocketPermission "- ", "connect "; permission java.net.SocketPermission "- ", "resolve "; permission java.security.AllPermission;
看着好复杂啊
静山晚风 2013-05-28
  • 打赏
  • 举报
回复
因为浏览器只能访问一定目录下的文件,不是可以访问所有的文件,Applet没有那么高的权限。所以解决方案有两个: 1,通过签名来解决: 2,通过更改java/lib/security/java.‍policy文件来实现。当然这种方式肯定不安全。具体做法是:将下面内容添加到java.policy文件中: ‍ permission java.util.PropertyPermission "user.dir ", "read "; permission java.util.PropertyPermission "user.home ", "read "; permission java.util.PropertyPermission "java.home ", "read "; permission java.util.PropertyPermission "java.class.path ", "read "; permission java.util.PropertyPermission "user.name ", "read "; permission java.lang.RuntimePermission "accessClassInPackage.sun.misc "; permission java.lang.RuntimePermission "accessClassInPackage.sun.audio "; permission java.lang.RuntimePermission "modifyThread "; permission java.lang.RuntimePermission "modifyThreadGroup "; permission java.lang.RuntimePermission "loadLibrary.* "; permission java.io.FilePermission " < <ALL FILES> > ", "read "; permission java.io.FilePermission "${user.dir}${/}jmf.log ", "write "; permission java.io.FilePermission "${user.home}${/}.JMStudioCfg ", "write "; permission java.net.SocketPermission "* ", "connect,accept "; permission java.io.FilePermission "C:\WINNT\TEMP\* ", "write "; permission java.io.FilePermission "C:\WINNT\TEMP\* ", "delete "; permission java.awt.AWTPermission "showWindowWithoutWarningBanner "; permission javax.sound.sampled.AudioPermission "record "; permission java.net.SocketPermission "- ", "listen "; permission java.net.SocketPermission "- ", "accept "; permission java.net.SocketPermission "- ", "connect "; permission java.net.SocketPermission "- ", "resolve "; permission java.security.AllPermission;
静山晚风 2013-05-28
  • 打赏
  • 举报
回复
因为浏览器只能访问一定目录下的文件,不是可以访问所有的文件,Applet没有那么高的权限。所以解决方案有两个: 1,通过签名来解决: 2,通过更改java/lib/security/java.‍policy文件来实现。当然这种方式肯定不安全。具体做法是:将下面内容添加到java.policy文件中: ‍ permission java.util.PropertyPermission "user.dir ", "read "; permission java.util.PropertyPermission "user.home ", "read "; permission java.util.PropertyPermission "java.home ", "read "; permission java.util.PropertyPermission "java.class.path ", "read "; permission java.util.PropertyPermission "user.name ", "read "; permission java.lang.RuntimePermission "accessClassInPackage.sun.misc "; permission java.lang.RuntimePermission "accessClassInPackage.sun.audio "; permission java.lang.RuntimePermission "modifyThread "; permission java.lang.RuntimePermission "modifyThreadGroup "; permission java.lang.RuntimePermission "loadLibrary.* "; permission java.io.FilePermission " < <ALL FILES> > ", "read "; permission java.io.FilePermission "${user.dir}${/}jmf.log ", "write "; permission java.io.FilePermission "${user.home}${/}.JMStudioCfg ", "write "; permission java.net.SocketPermission "* ", "connect,accept "; permission java.io.FilePermission "C:\WINNT\TEMP\* ", "write "; permission java.io.FilePermission "C:\WINNT\TEMP\* ", "delete "; permission java.awt.AWTPermission "showWindowWithoutWarningBanner "; permission javax.sound.sampled.AudioPermission "record "; permission java.net.SocketPermission "- ", "listen "; permission java.net.SocketPermission "- ", "accept "; permission java.net.SocketPermission "- ", "connect "; permission java.net.SocketPermission "- ", "resolve "; permission java.security.AllPermission;
Eclipse 是目前功能比较强大的JAVA IDE(JAVA编程软件),是一个集成工具的开放平台,而这些工具主要是一些开源工具软件。在一个开源模式下运作,并遵照共同的公共条款,Eclipse 平台为工具软件开发者提供工具开发的灵活性和控制自己软件的技术。 Eclipse已经围绕着免版权费技术和通用平台,为工具集成开发形成了一个独立的开放的“生态系统”。以Eclipse为基础的工具允许开发者自由选择语言,平台和厂商环境。 Eclipse提供了一个以插件为基础的框架,让你可以轻松创建,集成和使用工具软件,节省了大量时间和金钱。通过合作和一体化开发核心技术,软件工具开发者可以利用平台的重复使用功能,专注于核心技术,创建新的开发技术。 JBuilder, Eclipse, Neebeans 是3种应用比较普遍的Java开发的平台,如果你以后想走java这条路,最好学会EcLIPSE。jcreator功能太简单,不好用,JBUILDER太庞大,不好学。查看Eclipse快捷键指南。 Eclipse的平台是基于Java语言编写,并包含大量的插件创建工具以及实例。它已经在大范围的开发工作站上应用,包括Linux,HP-UX,AIX,Solaris,QNX,Mac OS X,以及Windows平台的系统。 "分享一个在Java中反射获取私有构造函数、属性、方法" 我一直以为类的私有构造函数、属性、方法除了类自身其他类是无法访问的,前几天正好学习Spring框架,在学习Spring框架基础 Bean包时,写了一个简单的例子,类似如下:   package study.spring.bean;    public class SimpleBean   {   private String beanName;   private SimpleBean() {   System.out.println( " SimpleBean " );   }   /** */ /**   * @return Returns the beanName.   */   public String getBeanName()   {   return beanName;   }   /** */ /**   * @param beanName The beanName to set.   */   public void setBeanName(String beanName)   {   this .beanName = beanName;   }   }   发现居然也能调用成功,当时很惊讶,反射机制平时在以前的项目中也常使用,但不能构造只有私有构造函数的类。   自己做了一个简单例子:   package study.spring.bean;   import java.lang.reflect.Constructor;   import java.lang.reflect.InvocationTargetException;   public class SimpleTest   {   /** *//**   * @param args   */   public static void main(String[] args)   {   // TODO Auto-generated method stub   try   {    Constructor[] cts=Class.forName("study.spring.bean.SimpleBean").getDeclaredConstructors();   for(int i=0;i<cts.length;i++){    cts[i].newInstance(null);   }   }   catch (SecurityException e)   {   // TODO Auto-generated catch block   e.printStackTrace();   }   catch (ClassNotFoundException e)   {   // TODO Auto-generated catch block   e.printStackTrace();   }   catch (IllegalArgumentException e)   {   // TODO Auto-generated catch block   e.printStackTrace();   }   catch (InstantiationException e)   {   // TODO Auto-generated catch block   

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧