Java.security.Access.ControlException:拒绝访问(“Java.io.FilePermission”[object file]“read”)
我有以下问题: 我有一个Java程序,通过小程序接收二进制文件 我用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
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
}
}
});
}