Carregar imagem em JavaFX causa AccessControlException quando implantado como jnlp
-
21-12-2019 - |
Pergunta
Eu tenho um aplicativo JavaFX muito simples.Ele precisa desenhar uma imagem que mantenho como png no diretório "recursos".Eu inicializo assim:
private final static Image customerImage;
static {
Path imageLink = Paths.get("resources", "homeIcon.png");
customerImage = new Image("file:"+imageLink.toString(),true);
}
Isso funciona bem quando eu executo direto do meu IDE.
Mas quando eu implanto o aplicativo como um pacote JavaFX e executo o jnlp resultante, o construtor Image lança uma AccessControlException, especificamente:
java.security.AccessControlException: access denied ("java.util.PropertyPermission" "user.dir" "read")
O que, se bem entendi, significa que ele não tem acesso para procurar o arquivo.Como devo resolver isso?Também parece estranho que ele apareça em um diretório quando implantado como .jnpl. Devo colocar o arquivo .png em outro lugar?
Solução
customerImage = new Image("file:"+imageLink.toString(),true);
Provavelmente isso não está formando um URL.Deveria ser:
customerImage = new Image(imageLink.toURI().toURL().toString(),true);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow