我有以下问题:
我有一个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 ;
}
}发布于 2014-11-22 18:22:22
您需要用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
}
}
});
}https://stackoverflow.com/questions/27080512
复制相似问题