JavaFXでイメージをロードすると、JNLPとしてデプロイされたときにAccessControlExceptionが発生します。
-
21-12-2019 - |
質問
非常に単純な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を実行してから、イメージコンストラクタは具体的には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);
. 所属していません StackOverflow