我有一个非常简单的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);