-1

I am trying to export a runnable .jar file however I am faced with the following problems:

"VM arguments will not be part of the runnable JAR. Arguments can be passed on the command line when launching the JAR"

I ignored the warning and hit finish to create the runnable .jar file. When I double click it doesn't work.

I ran the following code in my command line:

**java -jar C:\path\file.jar --module-path "C:\pathtofxsdk11\lib"  --add-modules javafx.controls,javafx.fxml,javafx.base,javafx.swing, javafx.graphics**

After which, I received the following error:

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:222)
        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)
        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)

I need help with creating the executable Jar.

4

1 回答 1

0

您在命令行中提供的选项顺序错误。在 jar 文件(或主类,如果您不使用该-jar选项)的名称之后提供的任何内容都将被解释为 Java 应用程序的参数(而不是 JVM 的参数),并传递给字符串数组在里面

public static void main(String[])

主类中的方法。

因此你应该使用

java --module-path "C:\pathtofxsdk11\lib"  --add-modules javafx.controls,javafx.fxml,javafx.base,javafx.swing,javafx.graphics -jar C:\path\file.jar

请注意,这并不意味着 jar 文件可以用作可以简单地在任何系统上运行的“可执行 jar”,因为 JavaFX 运行时不包含在从版本 11 开始的标准 Java 运行时中。相反,您可以使用jpackageJDK 14 中包含的工具来创建本机安装程序包。此捆绑包将包含一个 Java 运行时,您可以将其配置为包含 JavaFX。

您应该首先从此处下载并解压缩 JavaFX 的模块化版本(“jmods”)。

然后您的 jpackage 命令如下所示:

jpackage --module-path "C:\pathtofxmods" --add-modules javafx.controls,javafx.fxml,javafx.swing --input "C:\path" --main-jar file.jar --type exe --name MyApp --dest "C:\path\to\generated\executable"

您在上一步中解压缩的库在哪里C:\pathtofxmods:它应该包含一组*.jmod文件。这将生成一个.exe文件,C:\path\to\generated\executable该文件将在 Windows 系统上安装应用程序。您可以分发它 - 请注意最终用户甚至不需要 JRE,因为这会将 JRE 与包捆绑在一起。

您还可以jlink独立运行以创建与应用程序捆绑在一起的 JRE(使用 JavaFX)。查看完整的教程完整的工具文档

于 2020-08-06T18:41:17.087 回答