在JavaFX中加载图像会在部署为jnlp时导致AccessControlException

时间:2014-04-12 19:33:25

标签: java jnlp javafx-8 accesscontrolexception

我有一个非常简单的JavaFX应用程序。它需要在"资源"中绘制一个我保留的图像。目录。 我把它初始化为:

private final static Image customerImage;
static {
    Path imageLink = Paths.get("resources", "homeIcon.png");
    customerImage = new Image("file:"+imageLink.toString(),true);
}

当我直接从IDE运行它时,这很好用。

但是当我将应用程序部署为JavaFX包并运行生成的jnlp时,Image构造函数会抛出一个AccessControlException,具体来说:

java.security.AccessControlException: access denied ("java.util.PropertyPermission" "user.dir" "read")

如果我理解正确,则意味着它无权搜索该文件。我该如何解决这个问题?如果我将.png文件放在其他地方,它会在部署为.jnpl时显示在目录中似乎也很奇怪?

1 个答案:

答案 0 :(得分:2)

customerImage = new Image("file:"+imageLink.toString(),true);

可能没有形成URL。   它应该是:

customerImage = new Image(imageLink.toURI().toURL().toString(),true);