プロジェクト

全般

プロフィール

バグ #90

未完了

JDK 11アプリをScenicView11で参照するとエラー

高橋 徹 さんがほぼ5年前に追加. ほぼ5年前に更新.

ステータス:
新規
優先度:
通常
担当者:
-
カテゴリ:
-
対象バージョン:
開始日:
2019/05/13
期日:
進捗率:

0%

予定工数:
重要度:

説明

ZuluFX 11で動かすJavaFXアプリケーションに対して、ScenicView11 for Windowsを実行(binディレクトリ下のscenicview.batから)したところ、接続先プロセスを探す段階でコンソールにエラーが繰り返し発生していた。

Caused by: java.lang.NoSuchMethodError: javafx.stage.Window.impl_getWindows()Ljava/util/Iterator;
        at org.fxconnector.remote.RuntimeAttach$1.getStageIDs(RuntimeAttach.java:138)
        at org.fxconnector.remote.RemoteApplicationImpl.getStageIDs(RemoteApplicationImpl.java:108)
        at jdk.internal.reflect.GeneratedMethodAccessor72.invoke(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:564)
        at java.rmi/sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:359)
        at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:200)
        at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:197)
        at java.base/java.security.AccessController.doPrivileged(Native Method)
        at java.rmi/sun.rmi.transport.Transport.serviceCall(Transport.java:196)
        at java.rmi/sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:562)
        at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:796)
        at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:677)
        at java.base/java.security.AccessController.doPrivileged(Native Method)
        at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:676)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1135)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
        at java.base/java.lang.Thread.run(Thread.java:844)

高橋 徹 さんがほぼ5年前に更新

  • 対象バージョンJava on Windows にセット

高橋 徹 さんがほぼ5年前に更新

まず、このWindowクラスのimpl_getWindowsメソッドは早い段階でdeprecatedとなっていた。
OpenJFXリポジトリでjfx-11ブランチのソースコードを確認したところ、
javafx.stage.Windowクラスにimpl_getWindowsmethodは存在しなかった。

類似したメソッドとしては、WindowクラスにJDK 9から、getWindowsメソッドが提供されている。

public static ObservableList<Window> getWindows()

https://github.com/javafxports/openjdk-jfx/blob/jfx-11/modules/javafx.graphics/src/main/java/javafx/stage/Window.java

高橋 徹 さんがほぼ5年前に更新

scenicviewのリポジトリを確認し、org.fxconnector.remote.RuntimeAttachクラスのgetStageIDsメソッドの実装を以下より確認した。

https://github.com/JonathanGiles/scenic-view/blob/master/src/main/java/org/fxconnector/remote/RuntimeAttach.java

138行目は次のようになっている。

 ObservableList<Window> windows = Window.getWindows();

他の形式にエクスポート: Atom PDF