我有一个自签名小程序,它运行良好,直到 jre 7u21 出现。
现在我在调用 java.net.ProxySelector.setDefault 时得到以下 AccessControlException:
Caused by: java.security.AccessControlException: access denied
("java.net.NetPermission" "setProxySelector")
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at sun.plugin2.applet.FXAppletSecurityManager.checkPermission(Unknown Source)
at java.net.ProxySelector.setDefault(Unknown Source)
为了测试,我尝试删除此调用,但其他 AccessControlExceptions 开始弹出。显然 7u21 对小程序的安全模型进行了重大更改。
我一直认为,如果用户接受小程序的数字签名,则不存在安全限制。7u21 现在表示即使签名的小程序也可以在沙盒模式下运行,而无需明确指定何时是这种情况。(7u21 发行说明)。我在 Java 控制面板中的安全级别滑块设置为中等(最低级别)。任何建议如何解决这个问题?
更新:我通过添加安全标签解决了它
<security>
<all-permissions/>
</security>
到小程序的 jnlp 文件(小程序通过 dtjava 部署)。它现在在 7u21 下运行没有问题。