首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用java 8启动applet时拒绝java.io.FilePermission读取访问

使用java 8启动applet时拒绝java.io.FilePermission读取访问
EN

Stack Overflow用户
提问于 2015-05-14 16:09:50
回答 1查看 5.6K关注 0票数 2

我有一个applet类,它试图在客户机系统中读取一个文件。但是当访问这个文件时,我会得到java.io.filePrmission错误

java.security.AccessControlException:拒绝访问("java.io.FilePermission“"C:\my_download\mytext_11May”"read")

我可以使用JRE 1.6访问该文件。但是,当applet使用jre1.8时,会引发上述异常。

我在用户主页位置的策略文件:

代码语言:javascript
复制
grant codeBase "file:${java.home}/lib/ext/*" {
  permission java.security.AllPermission;
};

grant {
  permission java.security.AllPermission;
};

grant codeBase "https://*.mydomain.net-" {
  permission java.security.AllPermission;
};

在1.6中,只有在默认的授予块中给出AllPermission时,它才能工作。

下面是我用来访问文件的代码:

代码语言:javascript
复制
File sourceDir = null;
try {
    sourceDir = (File) AccessController
        .doPrivileged(new PrivilegedExceptionAction<File>() {
            public File run() {
                    return new File(filePath);
                }
            });
} catch (PrivilegedActionException e) {
    System.out.println(e.getMessage()+"-----");
    e.printStackTrace();
} catch(Exception e) {
    System.out.println("EEEException: " + e.getMessage());
    e.printStackTrace();
}

奇怪的是,catch块也没有执行。它执行调用方方法的catch块。

jar使用所有必要的域和权限签名,如下所述。

代码语言:javascript
复制
Permissions: all-permissions

在同一个jar中,当我尝试写操作时,即使没有使用版本1.6和1.8的策略文件,它也可以正常工作。只有当我试图读到它时,我才会得到这个例外。在1.6中,我通过使用java策略来克服问题,但这在版本1.8中没有帮助。

提前感谢您的帮助!

EN

回答 1

Stack Overflow用户

发布于 2015-05-16 08:35:59

经过大量的研究,找到了解决办法。

从applet调用的方法必须包围在AccessController.doPrivileged块中。

例如:

代码语言:javascript
复制
public void methForApplet(){
   AccessController
        .doPrivileged(new PrivilegedExceptionAction<Object>() {
            public Object run() {
                    actualMethToBeExecuted();
                    return null;               
            }
    });
}

这在没有策略文件的java1.8和1.6中起作用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30242060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档