【发布时间】:2018-12-05 18:14:00
【问题描述】:
正如我们已经知道,在 JDK-10 之前,JavaFX 曾经是 JDK 的一部分,但随着 JDK-11 的发布,JavaFX 将被单独包含。
为此,我们需要为 JavaFX 提供 VM 参数,如下所示:-
--module-path "C:\javafx-sdk-11.0.1\lib" --add-modules=javafx.controls,javafx.fxml
到目前为止,一切都很好,但是当我们最终创建一个 JAR 文件进行分发时,会出现如下消息:
VM 参数不会成为可运行 JAR 的一部分。启动 JAR 时可以在命令行中传递参数
因此现在 JAR 文件无法打开应用程序。
现在请帮助我建议一些方法,以便用户只需单击 JAR 图标即可打开应用程序,就像以前一样。
编辑
应用提供的解决方案后 openjfx.io(非模块化项目部分),我可以使用 JavaFX 生成独立 Jar 文件。
现在我想添加一些本地依赖项,例如 pdfbox 和 Sqlite:
sqlite =C:\sqlite-jdbc-3.6.20.1.jar
pdfbox=C:\pdfbox-app-2.0.10.jar
我正在执行以下步骤:
第一步
cd eclipse-workspace2018\test101
第二步
set PATH_TO_FX="C:\javafx-sdk-11.0.1\lib"
第三步
dir /s /b src\*.java > sources.txt & \
javac --module-path %PATH_TO_FX% --add-modules=javafx.controls \
-d out @sources.txt & del sources.txt
第四步
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 的步骤。
【问题讨论】:
-
在执行 jar 时添加这些参数。
-
请详细说明**执行jar **
-
您的意思是在发布时?如果是,请修改我的代码,如下所示:- public static void main(String[] args) { launch(args); }
-
是的,我的意思是在运行 jar 时,您可以添加类似的 VM 参数并试一试。例如尝试从命令行执行。
-
谢谢你,但仍然存在问题是因为 javaFx-jdk 不是 JRE 的一部分,也没有成为最终生成的 JAR 的一部分。因此,应用程序的最终用户将无法运行该应用程序,除非他们的系统中有 javaFx-jdk 的副本。此外,通过传递附加参数等命令运行对开发人员来说是可以的,但对用户来说是不行的。请帮忙