java.security.AccessControlException: access denied

来源:互联网 发布:小七网络 编辑:程序博客网 时间:2024/06/10 08:32

今天在写一个解压缩的程序时,设想能够在解压或压缩之前,如果已经存在该文件了,那么就删除,结果真的存在该文件时,抛了异常:

Exception

java.security.AccessControlException: access denied (java.util.PropertyPermission LOG_INI write)         at java.security.AccessControlContext.checkPermission(Unknown Source)         at java.security.AccessController.checkPermission(Unknown Source)         at java.lang.SecurityManager.checkPermission(Unknown Source)         at java.lang.System.setProperty(Unknown Source)         at com.ebs.manage.front.mainGateServlet.init(mainGateServlet.java:50)         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)         at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)         at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)         at java.lang.reflect.Method.invoke(Unknown Source)         at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:244)         at java.security.AccessController.doPrivileged(Native Method)         at javax.security.auth.Subject.doAsPrivileged(Unknown Source)         at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:276)         at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:162)         at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:115)         at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1133)         at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:966)         at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3956)         at org.apache.catalina.core.StandardContext.start(StandardContext.java:4230)         at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)         at org.apache.catalina.core.StandardHost.start(StandardHost.java:736)         at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)         at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)         at org.apache.catalina.core.StandardService.start(StandardService.java:448)         at org.apache.catalina.core.StandardServer.start(StandardServer.java:700)         at org.apache.catalina.startup.Catalina.start(Catalina.java:552)         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)         at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)         at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)         at java.lang.reflect.Method.invoke(Unknown Source)         at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295)         at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433)

My Code

if (entryFile.exists()) {    // 检测文件是否允许删除,如果不允许删除,将会抛出SecurityException    SecurityManager securityManager = new SecurityManager();    securityManager.checkDelete(entryFilePath);    // 删除已存在的目标文件    entryFile.delete();}

解决办法:

<%你的目录%>\Java\jre7\lib\security\Java.policy中加入最后一行语句就解决了:

// Standard extensions get all permissions by defaultgrant codeBase "file:${{java.ext.dirs}}/*" {        permission java.security.AllPermission;};// default permissions granted to all domainsgrant {        // Allows any thread to stop itself using the java.lang.Thread.stop()        // method that takes no argument.        // Note that this permission is granted by default only to remain        // backwards compatible.        // It is strongly recommended that you either remove this permission        // from this policy file or further restrict it to code sources        // that you specify, because Thread.stop() is potentially unsafe.        // See the API specification of java.lang.Thread.stop() for more        // information.        permission java.lang.RuntimePermission "stopThread";        // allows anyone to listen on dynamic ports        permission java.net.SocketPermission "localhost:0", "listen";        // permission for standard RMI registry port        permission java.net.SocketPermission "localhost:1099", "listen";        // "standard" properies that can be read by anyone        permission java.util.PropertyPermission "java.version", "read";        permission java.util.PropertyPermission "java.vendor", "read";        permission java.util.PropertyPermission "java.vendor.url", "read";        permission java.util.PropertyPermission "java.class.version", "read";        permission java.util.PropertyPermission "os.name", "read";        permission java.util.PropertyPermission "os.version", "read";        permission java.util.PropertyPermission "os.arch", "read";        permission java.util.PropertyPermission "file.separator", "read";        permission java.util.PropertyPermission "path.separator", "read";        permission java.util.PropertyPermission "line.separator", "read";        permission java.util.PropertyPermission "java.specification.version", "read";        permission java.util.PropertyPermission "java.specification.vendor", "read";        permission java.util.PropertyPermission "java.specification.name", "read";        permission java.util.PropertyPermission "java.vm.specification.version", "read";        permission java.util.PropertyPermission "java.vm.specification.vendor", "read";        permission java.util.PropertyPermission "java.vm.specification.name", "read";        permission java.util.PropertyPermission "java.vm.version", "read";        permission java.util.PropertyPermission "java.vm.vendor", "read";        permission java.util.PropertyPermission "java.vm.name", "read";        // Add By Me        permission java.security.AllPermission;};

permission java.security.AllPermission;

0 0
原创粉丝点击