Программа JavaFX не запускается, когда для VM Options установлен один каталог, но работает нормально, если для другого каталога установлены те же файлы. - PullRequest
0 голосов
/ 13 ноября 2018

У меня есть проект в IntelliJ (Java 11), содержащий два модуля.Один из них - простой Java-модуль, а другой - программа JavaFX.Оба они пусты, поскольку я настраиваю структуру проекта для использования в Git и пытаюсь избавиться от любых абсолютных путей к файлам.

В корне проекта находится папка lib, содержащая все JAR-файлы.для JavaFX (плюс некоторые другие для JUnit).Они были скопированы непосредственно из папки, в которую я изначально извлек JavaFX (и которую я до сих пор использую нормально при создании не-Git JavaFX проектов), когда я впервые использовал среду.

У меня есть эти JAR-файлы, добавленные как зависимости в проекте,Любой код, использующий их, отображается без ошибок в IDE.Я знаю, что для запуска проекта JavaFX я должен добавить --module-path <path to JavaFX libs> --add-modules=javafx.controls,javafx.fxml к параметрам виртуальной машины в моей конфигурации запуска.Вот в чем проблема.

Когда я использую путь к исходному месту извлечения JavaFX, о котором я говорил ранее, все работает нормально (то есть открывается окно программы): --module-path C:/Tools/JavaFX/lib/ --add-modules=javafx.controls,javafx.fxml.

Однако, когда я использую путь к папке lib в моем проекте, которая содержит те же файлы (плюс файлы JUnit), она не работает (я получаю ошибки времени выполнения, и программа не отображает свое окно): --module-path C:/Users/Henry/Documents/IntelliJ/LAA_Rotas_4/lib/ --add-modules=javafx.controls,javafx.fxml

Ниже приведен вывод времени выполнения:

"C:\Program Files\Java\jdk-11\bin\java.exe" --module-path C:/Users/Henry/Documents/IntelliJ/LAA_Rotas_4/lib/ --add-modules=javafx.controls,javafx.fxml "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2018.2.4\lib\idea_rt.jar=57474:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2018.2.4\bin" -Dfile.encoding=UTF-8 -classpath C:\Users\Henry\Documents\IntelliJ\LAA_Rotas_4\out\production\Demo;C:\Users\Henry\Documents\IntelliJ\LAA_Rotas_4\lib\apiguardian-api-1.0.0.jar;C:\Users\Henry\Documents\IntelliJ\LAA_Rotas_4\lib\javafx-swt.jar;C:\Users\Henry\Documents\IntelliJ\LAA_Rotas_4\lib\javafx.base.jar;C:\Users\Henry\Documents\IntelliJ\LAA_Rotas_4\lib\javafx.controls.jar;C:\Users\Henry\Documents\IntelliJ\LAA_Rotas_4\lib\javafx.fxml.jar;C:\Users\Henry\Documents\IntelliJ\LAA_Rotas_4\lib\javafx.graphics.jar;C:\Users\Henry\Documents\IntelliJ\LAA_Rotas_4\lib\javafx.media.jar;C:\Users\Henry\Documents\IntelliJ\LAA_Rotas_4\lib\javafx.swing.jar;C:\Users\Henry\Documents\IntelliJ\LAA_Rotas_4\lib\javafx.web.jar;C:\Users\Henry\Documents\IntelliJ\LAA_Rotas_4\lib\junit-jupiter-api-5.3.1.jar;C:\Users\Henry\Documents\IntelliJ\LAA_Rotas_4\lib\junit-platform-commons-1.3.1.jar;C:\Users\Henry\Documents\IntelliJ\LAA_Rotas_4\lib\opentest4j-1.1.1.jar net.atos.laa_rotas.demo.Main
Graphics Device initialization failed for :  d3d, sw
Error initializing QuantumRenderer: no suitable pipeline found
java.lang.RuntimeException: java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found
    at javafx.graphics/com.sun.javafx.tk.quantum.QuantumRenderer.getInstance(QuantumRenderer.java:280)
    at javafx.graphics/com.sun.javafx.tk.quantum.QuantumToolkit.init(QuantumToolkit.java:222)
    at javafx.graphics/com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:260)
    at javafx.graphics/com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:267)
    at javafx.graphics/com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:158)
    at javafx.graphics/com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:658)
    at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:409)
    at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:363)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1051)
Caused by: java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found
    at javafx.graphics/com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.init(QuantumRenderer.java:94)
    at javafx.graphics/com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:124)
    at java.base/java.lang.Thread.run(Thread.java:834)
Exception in thread "main" java.lang.reflect.InvocationTargetException
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1051)
Caused by: java.lang.RuntimeException: No toolkit found
    at javafx.graphics/com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:272)
    at javafx.graphics/com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:267)
    at javafx.graphics/com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:158)
    at javafx.graphics/com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:658)
    at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:409)
    at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:363)
    ... 5 more

Process finished with exit code 1

Внутренне, в файле workspace.xml для IntelliJ, эти параметры виртуальной машины преобразуются в --module-path $PROJECT_DIR$/lib/ --add-modules=javafx.controls,javafx.fxml.Тем не менее, даже если я непосредственно установлю этот путь на C:/Users/Henry/Documents/IntelliJ/LAA_Rotas_4/lib/ в файле workspace.xml и перезагрузлю и запустлю проект, ничего не изменится.

Кто-нибудь знает, почему это происходит и что можно сделать, чтобы это исправить

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...