Я разрабатываю приложение с использованием Javafx, но я столкнулся с проблемой, создавая сборку и преобразовал его в исполняемое приложение. Несколько лет назад я создал небольшое приложение с использованием этой технологии, и я помню, что INTELLIJ Idea позволила мне создать нативного исполняемого файла практически для любой операционной системы настольных компьютеров (Windows, Mac или Linux). Однако эта стратегия не сработала для меня в этом проекте. Согласно тому, что я читал в Интернете, проект Javafx был изначально отделен от Oracle JDK, поэтому его необходимо работать независимо. Я исследовал, как создать исполняемую сборку этого приложения, используя плагины Maven (я уже пробовал некоторые варианты), и ничего не сработало. Мне удалось получить полученный файл. Я прикрепил свой файл pom.xml. < /P>
4.0.0
cu.nerzur
WallpaperEngine
0.2.2
WallpaperEngine
WallpaperEngine
UTF-8
5.10.2
23
com.sangupta
jerry-core
3.0.1
com.sangupta
jerry-http
2.0.0
org.projectlombok
lombok
1.18.38
true
provided
net.java.dev.jna
jna
5.13.0
net.java.dev.jna
jna-platform
5.13.0
org.openjfx
javafx-controls
26-ea+3
org.openjfx
javafx-fxml
26-ea+3
org.openjfx
javafx-swing
26-ea+3
org.junit.jupiter
junit-jupiter-api
${junit.version}
test
org.junit.jupiter
junit-jupiter-engine
${junit.version}
test
com.google.code.gson
gson
2.13.1
org.apache.maven.plugins
maven-compiler-plugin
3.14.0
23
org.projectlombok
lombok
1.18.38
-Xlint:all
org.apache.maven.plugins
maven-shade-plugin
3.6.0
package
shade
com.nerzur.wallpaperengine.Init
*:*
META-INF/*.SF
META-INF/*.DSA
META-INF/*.RSA
org.openjfx
javafx-maven-plugin
0.0.8
default-cli
com.nerzur.wallpaperengine.Init
app
app
app
true
true
true
< /code>
Но я до сих пор не могу включить Java fx -времени, и я получаю сообщение об ошибке при запуске JAR с командой Java -Jar App.jar. < /p>
PS D:\Development\SpringBoot\WallpaperEngine\target> java -jar .\WallpaperEngine-0.2.2.jar
Error: JavaFX runtime components are missing, and are required to run this application
PS D:\Development\SpringBoot\WallpaperEngine\target>
< /code>
Некоторые решения упоминаются с использованием файла модуля info.java для создания модуля Java, который включает зависимости Javafx. Однако при создании этого файла начинают появляться ошибки, потому что я использую зависимости, которые не поддерживаются модулями, или так кажется. В настоящее время я не использую этот файл, но когда я интегрировал его в проект, он выглядел примерно так.module com.nerzur.WallpaperEngine {
requires javafx.controls;
requires javafx.fxml;
requires javafx.graphics;
requires java.desktop;
requires transitive static lombok;
requires transitive slf4j.api;
requires transitive jerry.http;
requires transitive jerry.core;
requires transitive java.net.http;
requires transitive com.google.gson;
requires transitive com.sun.jna;
requires transitive com.sun.jna.platform;
opens com.nerzur.wallpaperengine to javafx.fxml;
opens com.nerzur.wallpaperengine.controller to javafx.fxml;
exports com.nerzur.wallpaperengine;
exports com.nerzur.wallpaperengine.controller;
exports com.nerzur.wallpaperengine.service;
exports com.nerzur.wallpaperengine.scheduledTask;
exports com.nerzur.wallpaperengine.util;
}
< /code>
Единственное решение, которое я обнаружил, чтобы сделать этот проект, подлежащий компиляции,-это использовать запуск4J (внешнее приложение) с использованием текущего pom.xml и удаления файла модуля info.java. Затем пройдите фиксированный путь для JRE и другого пути с параметрами выполнения JVM в качестве параметров со следующей командой:--модуль-пат "c: \ wallaperengine \ libs \ javafx-sdk-24.0.2 \ lib"-add-modules javafx.controls, javafx.fxml, javafx.swing "
Подробнее здесь: https://stackoverflow.com/questions/797 ... utable-app