当前位置: 首页 > 知识库问答 >
问题:

JavaFX与Maven一起使用exec:java,但在运行时不在jar中

刁钧
2023-03-14

我希望使用Maven在任何平台上使用JavaFX执行jar,无论主机上是否安装了JavaFX。

mvn exec:java
 Error: JavaFX runtime components are missing, and are required to run this application.
<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>

共有1个答案

廖臻
2023-03-14

正如何塞·佩雷达在评论中指出的那样,这个答案解决了这个问题。简而言之,我通过创建一个扩展JavaFX应用程序的类来解决这个问题,但没有将这个类作为JAR中的主类。相反,我将扩展应用程序的main方法调用到我真正的main类中。

示例:

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();
    }
}
 类似资料:
  • 我在使用selenium与maven运行页面工厂时遇到问题,如果有人能提供帮助,我将不胜感激。当我运行TestPage类时,我得到以下错误:

  • 我正面临着这个奇怪的问题,我正在开发的gui应用程序在intellij内部运行时看起来比在外部运行时要小。下面是一个演示图像: 奇怪的是,我喜欢它的缩放方式。为什么会发生这种情况?在Intellij a之外是否有可能复制这种情况?

  • 问题内容: 我正在Jenkins盒子上运行用Maven构建的jUnit4测试。我的目标是在执行测试之前还原测试数据库。 看起来exec-maven-plugin是可行的方法,但我无法使其运行。有指针吗?尽管有很多示例,但mojo网站上的文档非常薄。 我目前需要参加的课程位于: MyProject.src.test.java._tools.BuildTestEnvironment.java 我的po

  • 我制作了一个javafx应用程序表单,我得到了一个可执行的jar作为输出。现在,我的javafx应用程序依赖于两个第三方JAR,比如commons。伊奥。2.4.罐子 目前,为了运行我的应用程序,我必须像这样将这些依赖jar保存在可执行jar的类路径中 但我希望所有依赖的jar都捆绑在我的可执行jar中。 因为javafx使用ant构建,所以我尝试使用 但是在捆绑了所有依赖的jar之后,我没有得到

  • 我想在JavaFX应用程序中使用Selenium WebDriver,我想获得一个网页的截图,并在JavaFX应用程序中的ImageView中显示它。 此代码完全可以拍摄网页截图并保存: 为了在JavaFX应用程序中使用保存的屏幕截图,我试图对这个类进行一些简单的修改,使其成为一个JavaFX应用程序。 以下是修改后的代码: 这是一个最简单的JavaFX应用程序,在main方法中有一些代码,当我运

  • 我正在用IntelliJ开发一个小型JavaFX应用程序。 我已经用Intellij工件将它编译成一个jar,它在windows中可以很好地工作,无论是从命令行还是双击jar。 应用程序需要整天运行,我选择使用覆盆子,因为我认为这是最便宜的方式。 我在Raspbian上安装了它,来自Oracle的JDK 8 Oracle网站上的最后一个ARM版本 JVM正在工作,并使用显示正确的版本。我假设安装是