我有一个非常简单的JavaFX应用程序。它需要在“资​​源”目录中绘制以png格式保存的图像。
我像这样初始化它:

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")


如果我理解正确的话,这意味着它无权搜索文件。我该如何解决?当部署为.jnpl时,它会出现在目录中似乎也很奇怪,我是否应该将.png文件放在其他位置?

最佳答案

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


那可能不是URL。
  它应该是:

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

10-06 07:15