1

我有从 jar 文件中读取资源然后将其写入本地磁盘的特定要求。但是当我尝试将该资源写入本地磁盘时出现异常:

java.io.FilePermission (write) is raised.

我有我的罐子签名。我也尝试了以下解决方案,但它也不起作用。

AccessController.doPrivileged(new PrivilegedAction() 

似乎没有任何效果。

签署 jar 后我是否错过了一步,因为这是随处可用的最常见解决方案?

如何在不使用策略文件的情况下写入本地文件(因为不能在每台客户端计算机上完成)?

4

2 回答 2

4

您可以使用javax.jnlp.FileSaveService.

您可能缺少的一部分是在 JNLP 文件中将应用程序标记为安全。但是,编写一个安全的应用程序有点棘手,我不推荐它。

于 2012-06-13T20:52:29.650 回答
3

JNLP 还需要指定:

<security>
    <all-permissions/>
</security>

有关详细信息,请参阅JNLP 文件语法


我通常会使用FileSaveServiceTom's answer 中详细说明的内容,但这听起来更像是“文件”可能是用于配置应用程序的默认属性文件的情况。保存服务不太适合,因为应用程序。无法知道文件存储在哪里,或者以后如何访问它。出于安全原因,FileContents代替 a 提供的对象File没有返回路径的方法。

在这种情况下,提取配置的详细信息。PersistenceService使用JNLP API文件和存储它们。这是一个演示。的PersistenceService。此服务也适用于沙盒应用程序。(没有代码签名巫毒)。

于 2012-06-13T20:51:52.597 回答