我有一个小程序,它使用智能卡中的证书进行文件签名,这意味着需要几个额外的权限才能使其工作:将 .dll 作为文件加载到本地机器上,创建临时文件等。
所有涉及的 jar 都被签名并作为 Java Web Start 启动。
我感到困惑,当从 init() 方法调用完整的逻辑时,一切正常:
public void init() {
try {
File directory = new File("C:/Temp");
deployPKCS11Library(directory);
testFullCycleOnApplet("C:/somefile.txt");
} catch (Exception e) {
e.printStackTrace();
}
}
如果我将testFullCycleOnApplet
取出我的 init 方法并在初始化后单击按钮运行它,我将得到:
java.security.AccessControlException: access denied ("java.util.PropertyPermission" "java.io.tmpdir" "read")
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPropertyAccess(Unknown Source)
at java.lang.System.getProperty(Unknown Source)...
init 方法是否有更多的权利来执行受限的东西?在我设置的 JNLP 文件中
<security>
<all-permissions />
</security>