gpt4 book ai didi

带有 Maven 的 JavaFX 与 exec 一起工作 :java but not in the jar at runtime

转载 作者:行者123 更新时间:2023-11-29 04:12:29 25 4
gpt4 key购买 nike

我想使用 maven 在任何平台上执行带有 JavaFX 的 jar,无论主机上是否安装了 JavaFX。

只要我用

运行我的类(class),这就有效
mvn exec:java

但是,我无法生成具有依赖项的 jar。在运行时,我得到以下(它编译)

 Error: JavaFX runtime components are missing, and are required to run this application.

在我的 pom 中,我有以下内容:

<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>11</version>
</dependency>
...
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
...
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.6.0</version>
<executions>
<execution>
<goals>
<goal>java</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>Gui</mainClass>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>Gui</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>

所以我不明白为什么它与 exec:java 一起工作(这意味着依赖关系没问题)而不是通过 jar...

最佳答案

正如 José Pereda 在评论中指出的那样,this答案解决了。简而言之,我通过创建一个扩展 JavaFX 应用程序但不将此类作为 jar 中的主类的类来解决问题。相反,我将扩展应用程序的主要方法调用到我真正的主类中。

例子:

public class RealMain { //the class in the manifest
public static void main(String[] args) {
Gui.main(args);
}
}

public class Gui extends Application{
public static void main(String[] args) {
launch();
}
}

关于带有 Maven 的 JavaFX 与 exec 一起工作 :java but not in the jar at runtime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54258875/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com