繁体   English   中英

Java.security.Access.ControlException:访问被拒绝(“java.io.FilePermission”“[object file]”“read”)

[英]Java.security.Access.ControlException: access denied(“java.io.FilePermission” “[object file]” “read”)

我有以下问题:

我有一个Java程序,通过Applet接收二进制文件。

我使用getParameter(file)收到该文件,并使用java.io.FileInputStream(file)读取该文件。

我把这个文件放在Web服务器上并通过javascript调用java程序

首先,当我运行程序时,发生了消息错误:

Java.security.Access.ControlException: access denied("java.io.FilePermission" "[object file]" "read")

我通过keytool创建了一个密钥,并使用jarsigner签署了jar文件。

但是,即使执行命令jarsigner ,当我再次运行Java程序时,错误消息仍然会发生:

Java.security.Access.ControlException: access denied("java.io.FilePermission" "[object file]" "read"). 

因此,即使签名后错误仍然存​​在。

我真的不知道该怎么办。

谁能帮我?

在java代码下面:

public class InJava extends Applet{
    String parametro;    
    public void sayHello() {

        parametro = getParameter("parametro");

        java.io.FileInputStream fis = null;

        try  {
            fis = new java.io.FileInputStream(parametro);
        }
        catch (Exception e)  {
            String retorno_exc = e.toString();
            return ;
        }

    }

您需要将代码包装在AccessController.doPrivileged中 ,如:

public class InJava extends Applet{

  public void sayHello() {

    final String parametro = getParameter("parametro");

    FileInputStream fis =  AccessController.doPrivileged(new PrivilegedAction<FileInputStream>() {
      public FileInputStream run() {
        try  {
          retrun new FileInputStream(parametro);
        } catch (IOException e)  {
          // handle exception
        }
      }
    });
  }

确保您的applet jar已签名,并且您了解运行 applet的 所有 其他 后果

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM