2014-11-22 52 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

相關問題