web-dev-qa-db-ja.com

Mavenを使用するJavaFX11は例外をスローします: "WindowsNativeRunloopThread"

Mavenを使用してJavaFX 11をテストしていますが、動作させることができません。 Open JDK 11をインストールしましたが、ダウンロード可能な.Zipからパスを構築するためにjarを追加すると、すべてが正常に機能します。

ただし、 javafx 11 サイトの推奨POMファイルを使用すると、次のエラーが発生します。

Exception in thread "WindowsNativeRunloopThread" Java.lang.NoSuchMethodError: <init>
    at javafx.graphics/com.Sun.glass.ui.win.WinApplication.staticScreen_getScreens(Native Method)
    at javafx.graphics/com.Sun.glass.ui.Screen.initScreens(Screen.Java:412)
    at javafx.graphics/com.Sun.glass.ui.Application.lambda$run$1(Application.Java:152)
    at javafx.graphics/com.Sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at javafx.graphics/com.Sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.Java:174)
    at Java.base/Java.lang.Thread.run(Thread.Java:834)
Exception in thread "JavaFX Application Thread" Java.lang.NullPointerException
    at javafx.graphics/com.Sun.prism.d3d.D3DPipeline.getAdapterOrdinal(D3DPipeline.Java:205)
    at javafx.graphics/com.Sun.javafx.tk.quantum.QuantumToolkit.assignScreensAdapters(QuantumToolkit.Java:695)
    at javafx.graphics/com.Sun.javafx.tk.quantum.QuantumToolkit.runToolkit(QuantumToolkit.Java:313)
    at javafx.graphics/com.Sun.javafx.tk.quantum.QuantumToolkit.lambda$startup$10(QuantumToolkit.Java:258)
    at javafx.graphics/com.Sun.glass.ui.Application.lambda$run$1(Application.Java:153)
    at javafx.graphics/com.Sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at javafx.graphics/com.Sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.Java:174)
    at Java.base/Java.lang.Thread.run(Thread.Java:834)

この問題は一度発生したようです ここ しかし、そのスレッドの解決策はどれも機能していません。

問題の診断に取り掛かる方法について誰かが提案を持っていますか?私はEclipse4.9で実行しており、一方がmavenを使用し、もう一方がビルドパスにjarを追加していることを除いて、同一の2つのプロジェクトのスクリーンショットを添付しています。どんな助けでも大歓迎です。 Two projects. javafx11mvn is a Maven project loading javafx11 dependencies from the POM file, Java11test2 is a standard Java project with javafx11 jars dded to build path]

6
macster110

@kleopatraによってリンクされた投稿で示唆されているように、問題はjavafx11が間違ったglass.dllファイルをロードしていることです。

他の回答で提案されている回避策は機能しますが、 OpenJFXチュートリアル は、可能であれば、EclipseにJava 11 VM =実行するため、正しいdllがロードされます。

Eclipse.iniファイルを変更し、(jdk11がC:\Program Files\Java\jdk-11.0.2にインストールされていると仮定して)次の行を追加できます。

-vm
C:\Progra~1\Java\jdk-11.0.2\bin\javaw.exe