Версия JDK - jdk-13.0.2: добавлена переменная окружения и переменная пути
Версия JFX - javafx-sdk-13.0.2: добавлена переменная окружения, а также переменная пути
Версия Eclipse - 2019-12-R: установлен плагин e (fx) clipse: строитель сцены
ОС - Windows 10
Теперь внутри затмения я настроил некоторые вещи для разрешить JavaFX работать внутри IDE. Поэтому я перечислю то, что я сделал внутри конфигураций IDE:
Окно> Настройки> Java> Установленные JRE> Добавлен jdk-13.0.2 под опцией «Стандартная виртуальная машина»> Аргумент VM - путь к модулю "C: \ Program Files \ Java \ javafx-sdk-13.0.2 \ lib" --add-modules javafx.controls, javafx.f xml.
Окно > Настройки> Java> Путь сборки> Пользовательские библиотеки> Создана новая библиотека, содержащая javafx.base, javafx.controls, javafx.f xml, javafx.graphics, javafx.media, javafx.swing, javafx. web, javafx-swt .jar файлы.
Для отдельных проектов мне все еще необходимо добавить новую пользовательскую библиотеку в «путь к классам», чтобы сделать это: I: Щелкните правой кнопкой мыши папку Project> Свойства> Java Путь сборки> Библиотеки> Удалить папку JavaFX SDK по умолчанию (не содержит файлы .jar)> Добавить новую библиотеку> Библиотека пользователя> Выберите созданную библиотеку JavaFX, которая содержит файлы .jars. На этом этапе я могу отлаживать и запускать все что угодно Javafx внутри IDE.
Оба теста представляют собой базовую сборку c блока 300x300 без каких-либо других компонентов (разрушив весь проект, прежде чем пытаться это выяснить). Разница между ними только в том, что 1 содержит информацию о модуле. java (созданный модуль при создании проекта). Информация о модуле. java содержит:
module testing {
exports application;
requires javafx.graphics;
requires javafx.base;
requires javafx.controls;
requires javafx.fxml;
requires javafx.media;
requires javafx.swing;
requires javafx.swt;
requires javafx.web;
}
Другой «Testing2» не имеет информации о модуле. java, и один не был создан, когда проект был (флажок снят). Когда я пытаюсь «экспортировать» любой из них, используя опцию Runnable Jar, затем «извлечь необходимые библиотеки в сгенерированный jar», он экспортирует со следующей ошибкой: дублирующаяся запись: module-info.class . Что сбивает с толку, потому что у «Testing2» не должно быть никаких модулей? Если я экспортирую, используя «Пакет обязательных библиотек в сгенерированный jar», то при экспорте я не получаю никакой ошибки, но сам файл .jar при нажатии открывает окно cmd примерно на 0,5 секунды, закрывает и больше ничего не делает. То же самое, если я использую отдельную папку для библиотек при экспорте. При попытке открыть из командной строки я получаю «Не удается получить доступ к Jarfile \ path \ jar.jar», а затем, если я открываю cmd от имени администратора, я получаю «Отсутствующие компоненты среды выполнения Javafx» && Я получил
`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 com.sun.javafx.tk.quantum.QuantumRenderer.getInstance(QuantumRenderer.java:280)
at com.sun.javafx.tk.quantum.QuantumToolkit.init(QuantumToolkit.java:244)
at com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:260)
at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:267)
at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:158)
at com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:658)
at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:678)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195)
at java.base/java.lang.Thread.run(Thread.java:830)
Caused by: java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found
at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.init(QuantumRenderer.java:94)
at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:124)
... 1 more
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:567)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:61)
Caused by: java.lang.RuntimeException: No toolkit found
at com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:272)
at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:267)
at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:158)
at com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:658)`enter code here`
at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:678)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195)
at java.base/java.lang.Thread.run(Thread.java:830)
Теперь единственной вещью, которую я не смог полностью проверить в некоторых из найденных ответов, является «манифест». До сих пор у меня сложилось впечатление, что Eclipse автоматически создает его, и когда я выбираю конфигурацию запуска во время экспорта, я выбираю точку входа с моим основным классом. Я также не смог получить к нему доступ, и когда я искал, как создать его в «Затмении», буквально все отвечали: «Затмение делает это для вас автоматически» или использует 5-летнюю версию, в которой у меня есть шаги экрана, которые я просто нет в самой последней версии IDE. Если бы кто-нибудь мог дать мне некоторое представление о том, что на самом деле здесь происходит не так, я был бы очень признателен. Спасибо!