【问题标题】:java.util.PropertyPermission user.home read (Access Denied)java.util.PropertyPermission user.home 读取(拒绝访问)
【发布时间】:2011-12-29 13:24:42
【问题描述】:

我有一个签名的小程序,我在其中使用 JFilechooser 从本地文件系统浏览文件以进行上传。它可以在 windows 和 mac 中正常运行。但在 linux 中它显示错误 Access Denied (java.util.PropertyPermission user.home read)。我在网上搜索了一个solution。我做了相应的,但无法解决问题。

我在我的主文件夹中创建了文件 .java.policy 文件。

grant codeBase "http://bioinfo.utu.fi/applet/*" {
  permission java.io.FilePermission "/home/raj/-", "read";
  permission java.io.FilePermission "/home/raj/-", "write, delete";
};

当我单击“浏览”按钮时,我无法在 Linux 中获得 JFileChooser 对话,但显示异常:Access Denied (java.util.PropertyPermission user.home read)。如何在 Linux 中运行它? 感谢您的帮助。

近期更新:

我从终端搜索了 java.policy 文件

[raj@localhost Desktop]$ locate java.policy
/home/raj/.java.policy
/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/security/java.policy

我在文件 /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre/lib/security/java.policy 中添加了以下行

grant{
    ...
    ...
    permission java.util.PropertyPermission "user.home", "read";
        permission java.io.FilePermission "/home/raj", "read";
    permission java.io.FilePermission "${user.home}${/}*", "read,write";

    }

不,我可以看到 JFileChoose 对话。现在我遇到了另一个问题。在小程序文件选择器对话框中,我看不到主目录中的文件。

【问题讨论】:

  • 如何让浏览按钮在 Linux 上工作?
  • 所以您已经解决了标题中的问题,现在您还有一个不同的问题?是时候关闭这个了。

标签: java io applet signed-applet


【解决方案1】:

这个问题似乎要深得多……

您是否使用本地实用程序而不是小程序检查了 user.home?是 "?" 还是不是绝对路径?

我确实建议您使用 System.getProperty("user.home") 但使用桌面工具进行检查;

32 位 JDK 也可能存在客户端机器问题。这是众所周知的bug,所以也许这就是问题所在。

请报告有帮助

【讨论】:

  • 我尝试使用桌面应用程序。 System.out.println(System.getProperty("user.home"))。它显示正确的主目录。我所知道的是,applet 需要两个权限 java.io.FilePermission 和 java.util.PropertyPermission。我在 java.policy 文件中添加了这两个权限。现在我可以看到 JFileChoose 对话框,但在主目录中看不到任何文件。
  • Emm...您是否尝试使用 user.home 作为您的 jfilechooser 的起点?作为替代尝试设置一些不同的起点;我的意思是这种方法docs.oracle.com/javase/1.5.0/docs/api/javax/swing/…;请报告有帮助
  • 请告诉我你的 linux jre 版本
  • 是的,我正在尝试将 user.home 作为 JFileChooser 的起点。我使用了与您提到的 setCurrentDirectory() 相同的方法。我的 Java 版本是 java version "1.6.0_20" OpenJDK Runtime Environment (IcedTea6 1.9.10) (fedora-55.1.9.10.fc14-i386) OpenJDK Server VM (build 19.0-b09, mixed mode)
  • Emm...您是否尝试过将 setCurrentDirectory() 用于其他位置?我的意思不是只针对 user.home?
猜你喜欢
  • 2013-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多