Java - 如何在Java Web Start中获取权限

3

您好,我已经成功创建了我的Java应用程序的jar和.jnlp文件,但在运行时遇到了问题。使用Java Web Start启动可以正常运行,但通常情况下,当我运行它时,它不会要求访问硬盘进行文件I/O的权限。

我需要一些帮助和建议,知道如何获得权限,即我需要做什么?是我必须对所有类都要做些什么吗?我在Java Web Start中收到的错误消息如下所示。

Exception in thread "AWT-EventQueue-0" java.security.AccessControlException: 
  access denied (java.io.FilePermission StockDatabase;Stocks.dat 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.checkRead(Unknown Source)
    at java.io.File.exists(Unknown Source)
    at StockCodeDatabase.<init>(OptraderSA.java:782)
    at OptraderSA.actionPerformed(OptraderSA.java:136)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.AbstractButton.doClick(Unknown Source)
    at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
    at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unkno
3个回答

7

您需要签署JNLP文件并配置<security>元素,如此处所述。


嗨,Trojanfoe,再次感谢您的帮助!按照adnans和Trashgod的建议添加了<security>元素,但仍然无法正常工作。我该如何签署我的JNLP文件? - Kurt
@Kurt:不客气。看看这个:http://download.oracle.com/javase/tutorial/deployment/jar/signindex.html - trojanfoe
谢谢 Trojanfoe,我会看看的。哇,你真的很懂啊。 - Kurt

6
请在您的JNLP文件中添加以下内容:
<security>
  <all-permissions/>
</security>

这将弹出一个对话框,要求用户授予您的应用所需的权限。

1
如果您想要访问文件系统,您需要更改JNLP文件以包含以下内容:
<security><all-permissions/></security>

这需要您也对您的jar文件进行签名。

另一个选项是将文件作为资源打包到jar文件中,这样您就不必做所有这些操作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接