チケット #40740

java 15 exewrap 1.6.3 でUnsatisfiedLinkError

登録: 2020-09-18 08:54 最終更新: 2020-09-18 10:56

報告者:
担当者:
チケットの種類:
状況:
完了
コンポーネント:
(未割り当て)
マイルストーン:
(未割り当て)
優先度:
5 - 中
重要度:
5 - 中
解決法:
修正済み
ファイル:
2

詳細

環境 Windows 10 Pro 1909 (18363.1082) Liberica Full JDK 15+36 x86 64 bit exewrap 1.6.3

再現手順

JavaFX.java

  1. import javafx.application.Application;
  2. import javafx.stage.Stage;
  3. import javafx.scene.control.Label;
  4. import javafx.scene.Scene;
  5. public class JavaFX extends Application {
  6. public static void main(String[] args)
  7. {
  8. System.out.println(System.getProperty("java.runtime.version"));
  9. System.out.println(System.getProperty("java.vm.name"));
  10. System.out.println(System.getProperty("java.home"));
  11. System.setProperty("prism.order", "sw");
  12. launch();
  13. }
  14. public void start(Stage stage) throws Exception {
  15. Label label = new Label("Hello, world");
  16. Scene scene = new Scene(label, 200, 100);
  17. stage.setScene(scene);
  18. stage.show();
  19. }
  20. }

MANIFEST.MF

Main-Class: JavaFX

ビルドコマンド

javac JavaFX.java
jar -cvfm JavaFX.jar MANIFEST.MF JavaFX.class
exewrap -A x64 JavaFX.jar

展開したJDK(jdk-15-full)をJavaFX.exeと同じフォルダに配置

JavaFX.exeを起動 ウィンドウを最大化 以下の例外が発生し固まる。

RenderJob.run: internal exception
java.lang.UnsatisfiedLinkError: 'void com.sun.pisces.AbstractSurface.disposeNative(long)'
        at javafx.graphics/com.sun.pisces.AbstractSurface.disposeNative(Native Method)
        at javafx.graphics/com.sun.pisces.AbstractSurface$AbstractSurfaceDisposerRecord.dispose(AbstractSurface.java:118)
        at javafx.graphics/com.sun.prism.impl.Disposer.disposeUnreachables(Disposer.java:171)
        at javafx.graphics/com.sun.prism.impl.Disposer.cleanUp(Disposer.java:129)
        at javafx.graphics/com.sun.javafx.tk.quantum.UploadingPainter.run(UploadingPainter.java:195)
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
        at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305)
        at javafx.graphics/com.sun.javafx.tk.RenderJob.run(RenderJob.java:58)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
        at javafx.graphics/com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:125)
        at java.base/java.lang.Thread.run(Thread.java:832)

条件としては、java 15、exewrap 1.6.3、System.setProperty("prism.order", "sw");の3つが必須となります。 どれか1つでも違うと発生しませんでした。

チケットの履歴 (6 件中 3 件表示)

2020-09-18 08:54 更新者: yamam
  • 新しいチケット "java 15 exewrap 1.6.3 でUnsatisfiedLinkError" が作成されました
2020-09-18 10:17 更新者: hirukawa_ryo
  • 担当者(未割り当て) から hirukawa_ryo に更新されました
コメント

バグのご報告ありがとうございます。
いつも詳細な再現手順を提供いただいてとても助かっています。

Liberica Full JDK 15 + exewrap 1.6.3 + 提供いただいたコードで再現を試みたのですが、
私の手元では再現させることができませんでした。(最大化・最大化解除ともに正常に動作しました)
もしかすると他にも条件があるのかもしれません…。

それでも、exewrap 1.6.3 が再現条件に含まれていることは大きなヒントになりました。
1.6.2 では再現しないということですよね。

1.6.2 → 1.6.3 で JDK/JRE の bin フォルダーを java.library.path に含めない変更をしていました。
この変更が影響してしまっているのかもしれません。
bin フォルダーにある prism_sw.dll がロードできていないのではないかと考えました。

1.6.2 以前と同様に JDK/JREのbinフォルダーを java.library.path に含めるように修正したバージョンをビルドしました。
お手数ですが下記バージョンで動作が改善するか確認していただけないでしょうか?

動作改善が確認されましたら、1.6.4 として正式にリリースさせていただきたいと思います。

2020-09-18 10:40 更新者: yamam
コメント

対応がりがとうございます。 1.6.4pre1で発生しないことを確認しました。

2020-09-18 10:56 更新者: hirukawa_ryo
  • 解決法なし から 修正済み に更新されました
  • 状況オープン から 完了 に更新されました
コメント

確認ありがとうございます。
バージョン 1.6.4 として正式にリリースさせていただきました。

添付ファイルリスト

編集

ログインしていません。ログインしていない状態では、コメントに記載者の記録が残りません。 » ログインする