我最近在通过 JNLP 启动我的应用程序时偶然发现了一个问题。我现在将其缩小到 a java.security.AccessControlException
,这拒绝我关闭我的ExecuterService
.
所以,我做了一些阅读,发现我需要权限(modifyThread
)才能成功关闭服务。我还发现我应该使用<security>
-tag(在 JNLP 文件中)来请求它,但我对如何请求它有点困惑。
标签的文档说:
[...] 如果
all-permissions
指定了元素,应用程序将拥有对客户端机器和本地网络的完全访问权限。如果应用程序请求完全访问权限,则所有JAR 文件都必须签名。将提示用户[...]
通过阅读本文,在我看来,我可以选择获得所有权限或不获得权限……这似乎是一个令人困惑的实现。因为我只需要一个来关闭我的服务。
我还阅读了这篇文章,告诉我不应该请求所有权限,因为这样我会打开用户计算机以获取恶意代码。
那么,有没有办法指定我只需要特定的权限(modifyThread
),因此我不需要签署我的 jar?还是我必须采用“签署我的罐子并要求一切”的方法?