我已经实现了一个小程序,到目前为止一直没有使用Java 6。最近,当我切换到Java 7时,applet停止工作,在javascript控制台中显示以下异常:
Uncaught Error: java.security.AccessControlException: access denied ("java.util.PropertyPermission" "user.home" "read")
此行为始终可以重现,只需使用Linux命令update-java-alternatives
从一个Java版本切换到另一个Java版本。
applet是自签名的,其所有公共方法都会调用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新的安全限制和/或如何绕过它们?
答案 0 :(得分:1)
有些信息可以在Do java applets have to be signed with trusted cert authority with new v7 update 21?和http://www.oracle.com/technetwork/java/javase/7u21-relnotes-1932873.html
中找到2013年10月的下一次计划安全更新将有更多限制。
一个要求是从自签名小程序切换到来自受信任机构的证书。