JavaFX 11 с использованием Maven создает исключение: «WindowsNativeRunloopThread» - PullRequest
0 голосов
/ 20 октября 2018

Я тестировал JavaFX 11 с использованием Maven и не могу заставить его работать.У меня установлен Open JDK 11, и если добавить jar-файл для сборки пути из загружаемого .zip, то все работает просто отлично.

Однако, когда я использую рекомендуемый файл POM с сайта javafx 11 , я получаю следующую ошибку.

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)

Эта проблема, похоже, однажды возникла здесь , но ни одно из решений в этом потоке не сработало.

У кого-нибудь есть предложения по диагностике проблемы?Я работаю в Eclipse 4.9 и приложил снимок экрана с двумя идентичными проектами, за исключением того, что один использует maven, а другой имеет jar-файлы, добавленные к пути сборки.Любая помощь высоко ценится.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]

Ответы [ 3 ]

0 голосов
/ 10 января 2019

Это не единственная проблема Eclipse.У меня точно такая же проблема при запуске приложения OpenJFX в Intellij IDEA 2018.3.2.Если любая другая версия Java указана в переменной Windows% Path% env, то будет выдано указанное исключение.

Например, я использую Java 8 в качестве SDK по умолчанию и играю с Java 11. Это не работает таким образом.Это сработает, только если я удалю каталог bin Java 8 из% Path%.

Это довольно запутанно (и я считаю, что это ошибка), потому что я не вижу никаких отношений с Java 8 при запуске моегопроект в IDE:

C:\Software\Java\openjdk-11\bin\java.exe -Dmaven.multiModuleProjectDirectory=C:\Project\helloworld -Dmaven.home=C:\Software\Maven\3.6.0 -Dclassworlds.conf=C:\Software\Maven\3.6.0\bin\m2.conf "-javaagent:C:\Software\IntelliJ IDEA\CE_2018.3.2\lib\idea_rt.jar=64808:C:\Software\IntelliJ IDEA\CE_2018.3.2\bin" -Dfile.encoding=UTF-8 -classpath C:\Software\Maven\3.6.0\boot\plexus-classworlds-2.5.2.jar org.codehaus.classworlds.Launcher -Didea.version=2018.3.2 -T 2 -DskipTests=true exec:java
0 голосов
/ 22 февраля 2019

Как указано в сообщении, связанном с @kleopatra, проблема в том, что javafx11 загружает неправильный файл glass.dll.

Хотя обходной путь, предложенный в других ответах, работает, учебник OpenJFX предлагает, по возможности, дать команду eclipse использовать виртуальную машину Java 11 для запуска, чтобы загружалась правильная dll.

Вы можете изменить файл eclipse.ini и (предположим, что ваш jdk11 установлен в C:\Program Files\Java\jdk-11.0.2) добавить следующие строки:

-vm
C:\Progra~1\Java\jdk-11.0.2\bin\javaw.exe
0 голосов
/ 21 октября 2018

Решение этой проблемы в комментариях (клеопатра).Для быстрого ознакомления вам нужно добавить

-Djava.library.path=C:/anywhere-outside-eclipse 

(я проверял, используя -Djava.library.path=C:/) к аргументам виртуальной машины.Это означает, что javafx 11 работает с Maven внутри затмения.

...