我已经实现了一个小程序,并且到目前为止一直在使用 Java 6 没有任何麻烦。最近,当我切换到 Java 7 时,小程序停止工作,在 javascript 控制台中显示以下异常:
Uncaught Error: java.security.AccessControlException: access denied ("java.util.PropertyPermission" "user.home" "read")
这种行为始终可以重现,只需使用 Linux 命令从一个 Java 版本切换到另一个版本update-java-alternatives
。
小程序是自签名的,它的所有公共方法调用AccessController.doPrivileged()
,例如:
public File chooseFile() {
return AccessController.doPrivileged( new PrivilegedAction<File>() {
public File run() {
JFileChooser chooser = new JFileChooser();
chooser.setMultiSelectionEnabled(false);
return chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION ?
chooser.getSelectedFile() : null;
}
} );
}
我已经使用java.policy
本地文件解决了这个问题,但是需要特殊的安装程序不是一种选择。
有人知道哪些是 Java 7 新的安全限制和/或如何规避它们吗?