crawler
发贴: 0
积分: 0
|
于 2003-05-22 15:37
public class _Test2 { public static void main(String args[]) { try { JarLoader loader = new JarLoader("file:///e:\\testclass", ClassLoader.getSystemClassLoader()); final Class atomClass = loader.loadClass("PPMM2");
if (atomClass.getProtectionDomain().implies(new FilePermission("c:\\*", "delete"))) { System.out.println("hehe1"); }
final Object obj = atomClass.newInstance(); final _TestIf r = (_TestIf) obj;
class appmm implements PrivilegedExceptionAction { public Object run() throws Exception { if (r.getClass().getProtectionDomain().implies(new FilePermission("c:\\*", "delete"))) { System.out.println("hehe2"); } r.go(); return null; } };
appmm realppmm = new appmm(); AccessController.doPrivileged(realppmm);
} catch (Exception e) { e.printStackTrace(); } } }
我已经在.policy文件中设置了相应的权限,"hehe1"和"hehe2"都打印出来了, 为什么r.go()还是执行不了?PPMM2中非常简单:
public class PPMM2 implements _TestIf{ public void go() { File pFile = new File("c:\\java.txt"); pFile.delete(); } } 出现以下提示: java.security.AccessControlException: access denied (java.io.FilePermission c:\java.txt delete) at java.security.AccessControlContext.checkPermission(AccessControlContext.java:270) at java.security.AccessController.checkPermission(AccessController.java:401) at java.lang.SecurityManager.checkPermission(SecurityManager.java:542) at java.lang.SecurityManager.checkDelete(SecurityManager.java:1002) at java.io.File.delete(File.java:846) at PPMM2.go(PPMM2.java:12) at xsecurity._Test2$1$appmm.run(_Test2.java:38) at java.security.AccessController.doPrivileged(Native Method) at xsecurity._Test2.main(_Test2.java:44)
why edited on 2003-06-28 20:32
|