Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.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.security.Access.ControlException:拒绝访问(“Java.io.FilePermission”[object file]“read”)_Java_Applet_Access Denied_Getparameter - Fatal编程技术网

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

Java.security.Access.ControlException:拒绝访问(“Java.io.FilePermission”[object file]“read”),java,applet,access-denied,getparameter,Java,Applet,Access Denied,Getparameter,我有以下问题: 我有一个Java程序,通过小程序接收二进制文件 我用getParameter(file)接收该文件,并用java.io.FileInputStream(file)读取该文件 我把这个文件放在web服务器上,并通过javascript调用java程序 首先,当我运行程序时,出现了错误消息: Java.security.Access.ControlException: access denied("java.io.FilePermission" "[object file]" "re

我有以下问题:

我有一个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 ;
        }

    }

您需要将代码打包,如:

InJava扩展Applet的公共类{ 公共空间{ 最终字符串parametro=getParameter(“parametro”); FileInputStream fis=AccessController.doPrivileged(新权限(){ 公共文件输入流运行(){ 试一试{ 重新运行新文件输入流(parametro); }捕获(IOE异常){ //处理异常 } } }); } 确保您的小程序jar已签名,并且您了解一个

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
        }
      }
    });
  }