2014-11-22 410 views
3

我有以下问题:Java.security.Access.ControlException:访问被拒绝(“java.io.FilePermission中”,“[对象文件]”“读”)

我有经由小程序接收的Java程序一个二进制文件。

我收到的文件是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 ; 
     } 

    } 

回答

2

你需要用你的代码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(S)的签署,并且您了解allotherconsequencesrunningapplet

相关问题