Ticket #40740

java 15 exewrap 1.6.3 でUnsatisfiedLinkError

Open Date: 2020-09-18 08:54 Last Update: 2020-09-18 10:56

Reporter:
Owner:
Type:
Status:
Closed
Component:
(None)
MileStone:
(None)
Priority:
5 - Medium
Severity:
5 - Medium
Resolution:
Fixed
File:
2

Details

環境 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つでも違うと発生しませんでした。

Ticket History (3/6 Histories)

2020-09-18 08:54 Updated by: yamam
  • New Ticket "java 15 exewrap 1.6.3 でUnsatisfiedLinkError" created
2020-09-18 10:17 Updated by: hirukawa_ryo
  • Owner Update from (None) to hirukawa_ryo
Comment

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

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 Updated by: yamam
Comment

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

2020-09-18 10:56 Updated by: hirukawa_ryo
  • Resolution Update from None to Fixed
  • Status Update from Open to Closed
Comment

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

Attachment File List

Edit

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Login