我有一个特定的要求,从jar文件中读取资源,然后将其写入本地磁盘。但是当我尝试将该资源写入本地磁盘时出现异常:
java.io.FilePermission (write) is raised.
我的罐子签了。我也尝试过以下解决方案,但它也不起作用。
AccessController.doPrivileged(new PrivilegedAction()
似乎没什么用。
签署jar后我错过了一步,因为这是最常见的解决方案吗?
如何在不使用策略文件的情况下写入本地文件(因为无法在每台客户端计算机上完成)?
答案 0 :(得分:4)
您可以使用javax.jnlp.FileSaveService
从未签名的WebStart应用程序保存带有用户交互的文件。
您可能缺少的一个部分是在JNLP文件中将应用程序标记为安全。但是,编写安全的应用程序有点棘手,我不推荐它。
答案 1 :(得分:3)
JNLP还需要指定:
<security>
<all-permissions/>
</security>
有关详细信息,请参阅JNLP File Syntax。
我通常会使用Tom的答案中详述的FileSaveService
,但这听起来更像是'文件'可能是用于配置应用程序的默认属性文件。自应用程序以来,保存服务不太适合。无法知道文件的存储位置或以后如何访问它。出于安全原因,代替FileContents
提供的File
对象没有返回路径的方法。
在这种情况下,请提取配置的详细信息。档案&amp;使用JNLP API的PersistenceService
存储它们。这是一个demo. of the PersistenceService
。此服务也适用于沙盒应用。 (没有代码签署伏都教)。