Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从已签名的小程序中列出本地目录_Java_Permissions_Applet - Fatal编程技术网

Java 从已签名的小程序中列出本地目录

Java 从已签名的小程序中列出本地目录,java,permissions,applet,Java,Permissions,Applet,以下小程序被编译并打包到jar中,然后用自签名证书对jar进行签名 import java.applet.Applet; import java.io.File; import java.security.AccessController; import java.security.PrivilegedAction; import java.security.PrivilegedActionException; public class Test extends Applet {

以下小程序被编译并打包到jar中,然后用自签名证书对jar进行签名

import java.applet.Applet;
import java.io.File;
import java.security.AccessController;
import java.security.PrivilegedAction;
import java.security.PrivilegedActionException;

public class Test extends Applet {
        private static final long serialVersionUID = -3127185193501384816L;

        private final class DirectoryLister implements PrivilegedAction<File[]> {
                private final String attachmentsFolder;

                private DirectoryLister(String attachmentsFolder) {
                        this.attachmentsFolder = attachmentsFolder;
                }

                public File[] run() {
                        return new File(attachmentsFolder).listFiles();
                }
        }

        public File[] getFiles() throws PrivilegedActionException {
                String attachmentsFolder = getParameter("attachmentsFolder");

                if (attachmentsFolder != null) {
                        return AccessController.doPrivileged(new DirectoryLister(
                                        attachmentsFolder));
                }

                return null;
        }
}
这是我的生日礼物。遇到以下错误:

java.security.PrivilegedActionException: java.lang.reflect.InvocationTargetException
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.plugin.liveconnect.SecureInvocation$2.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.plugin.liveconnect.SecureInvocation.CallMethod(Unknown Source)
Caused by: java.lang.reflect.InvocationTargetException
        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 sun.plugin.javascript.JSInvoke.invoke(Unknown Source)
        at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at sun.plugin.javascript.JSClassLoader.invoke(Unknown Source)
        at sun.plugin.liveconnect.PrivilegedCallMethodAction.run(Unknown Source)
        ... 4 more
Caused by: java.security.AccessControlException: access denied (java.io.FilePermission c:\test 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 java.io.File.list(Unknown Source)
        at java.io.File.listFiles(Unknown Source)
        at Test$DirectoryLister.run(Test.java:20)
        at Test$DirectoryLister.run(Test.java:1)
        at java.security.AccessController.doPrivileged(Native Method)
        at Test.getFiles(Test.java:28)
        ... 14 more

这让我不禁要问,我是否仍然需要显式地授予Java主目录中某个配置文件中的perms以读取c:/test?如果是这样的话,谁能给我指点一下如何做到这一点的指南吗?

显然是缓存问题。清除所有缓存并重新构建/重新部署解决了该问题。也就是说,不需要额外的烫发设置

var files = applet.getFiles();

for (var file in files) {
    // Do something to file.
}
java.security.PrivilegedActionException: java.lang.reflect.InvocationTargetException
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.plugin.liveconnect.SecureInvocation$2.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.plugin.liveconnect.SecureInvocation.CallMethod(Unknown Source)
Caused by: java.lang.reflect.InvocationTargetException
        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 sun.plugin.javascript.JSInvoke.invoke(Unknown Source)
        at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at sun.plugin.javascript.JSClassLoader.invoke(Unknown Source)
        at sun.plugin.liveconnect.PrivilegedCallMethodAction.run(Unknown Source)
        ... 4 more
Caused by: java.security.AccessControlException: access denied (java.io.FilePermission c:\test 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 java.io.File.list(Unknown Source)
        at java.io.File.listFiles(Unknown Source)
        at Test$DirectoryLister.run(Test.java:20)
        at Test$DirectoryLister.run(Test.java:1)
        at java.security.AccessController.doPrivileged(Native Method)
        at Test.getFiles(Test.java:28)
        ... 14 more