Как мы уже знаем, до JDK-10 JavaFX раньше был частью JDK, но с выпуском JDK-11, JavaFX должен быть включен отдельно.
Для этого нам нужно предоставить VM аргумент для JavaFX, например так: -
--module-path "C:\javafx-sdk-11.0.1\lib" --add-modules=javafx.controls,javafx.fxml
До этого момента все было в порядке, но когда мы наконец-то создаем JAR-файл для распространения, то сообщение выглядит так:
Аргументы VM не будут частью исполняемого JAR.Аргументы могут передаваться в командной строке при запуске JAR
Поэтому теперь файл JAR не может открыть приложение.
Теперь, пожалуйста, помогите мне, предложив какой-нибудь выход, чтобы пользователь мог открыть приложение, просто щелкнув значок JAR, как это было раньше.
РЕДАКТИРОВАТЬ
После применения решения, предоставленного openjfx.io (раздел немодульные проекты), я могу сгенерировать автономный файл Jar с JavaFX.
Теперь я хочу добавить некоторые локальные зависимостикак pdfbox
и Sqlite
:
sqlite =C:\sqlite-jdbc-3.6.20.1.jar
pdfbox=C:\pdfbox-app-2.0.10.jar
Я делаю следующие шаги:
Шаг-1
cd eclipse-workspace2018\test101
Шаг-2
set PATH_TO_FX="C:\javafx-sdk-11.0.1\lib"
Шаг-3
dir /s /b src\*.java > sources.txt & \
javac --module-path %PATH_TO_FX% --add-modules=javafx.controls \
-d out @sources.txt & del sources.txt
Шаг-4
cd out & jar xf "%PATH_TO_FX%\javafx.base.jar" & \
jar xf "%PATH_TO_FX%\javafx.graphics.jar" & \
jar xf "%PATH_TO_FX%\javafx.controls.jar" & \
cd ..
copy "%PATH_TO_FX%\..\bin\prism*.dll" out & \
copy "%PATH_TO_FX%\..\bin\javafx*.dll" out & \
copy "%PATH_TO_FX%\..\bin\glass.dll" out & \
copy "%PATH_TO_FX%\..\bin\decora_sse.dll" out
del out\META-INF\MANIFEST.MF & del out\module-info.class
mkdir libs
jar --create --file=libs/index101.jar \
--main-class=test101.Launcher -C out .
java -jar libs\index101.jar
Пожалуйста, измените мои шаги для добавления вышеупомянутых двух зависимостей pdfBox & sqlite.