捆绑了依赖项的JavaFX jar

我刚刚提出了一个关于使用javafxpackager制作JavaFX jar的问题,你可以在这里看到它。 我的问题是我无法在清单中包含类路径。 好吧,当我在等待答案时,我尝试了maven-antrun-plugin 。 它运行良好,我可以运行我的应用程序与依赖项,但是(总有一个但是)只有依赖项OUTSIDE我的最后一个jar。 所以它是这样的:

 FinalJar.jar lib |_{all dependencies here} 

我的清单文件通过JavaFX-Class-Path属性指向依赖项。 如果我把依赖项放在jar中,就像我想要的那样,它找不到我的依赖项。 有帮助吗?

编辑:这是将依赖项添加到jar中的步骤,它位于pom.xml中:

   org.apache.maven.plugins maven-antrun-plugin 1.6   package                 run      com.oracle ant-javafx ${javafx.version} ${java.home}/../lib/ant-javafx.jar system   com.oracle javafx ${javafx.version} ${java.home}/lib/jfxrt.jar system    

最后,我的POM的“构建”部分变成了这个(你可以看到它也有一个焊接部分),自从我使用它以来已经很长时间了,所以我甚至不知道它是否已经好了

  JarName   org.apache.maven.plugins maven-compiler-plugin 2.4  1.7 1.7 UTF-8    org.apache.maven.plugins maven-dependency-plugin 2.3   copy-dependencies package  copy-dependencies   runtime ${project.build.directory}/dist/lib false false true      org.apache.maven.plugins maven-antrun-plugin 1.6   package              run      com.oracle ant-javafx ${javafx.version} ${java.home}/../lib/ant-javafx.jar system   com.oracle javafx ${javafx.version} ${java.home}/lib/jfxrt.jar system     org.codehaus.mojo sonar-maven-plugin 2.0      org.eclipse.m2e lifecycle-mapping 1.0.0      org.apache.maven.plugins maven-dependency-plugin [2.0,)  copy-dependencies              

使用maven-shade-plugin要容易得多。 它构建了一个包含所有依赖项的大胖jar。 您可以将它与javafx-maven-plugin结合使用。 我也尝试了不同的方法并且玩了很长时间,这个解决方案是唯一真正有效的解决方案。 此外,它很容易设置。

以下是您必须添加到pom.xml的内容:

    org.apache.maven.plugins maven-shade-plugin 3.1.1     package  shade     your.package.name.Main        com.zenjava javafx-maven-plugin 8.8.3  your.package.name.Main     

mainClass更改您的包名称mainClass获取阴影和javaFx插件,您就完成了。 现在,您可以使用mvn package始终构建应用mvn package

你想获得一些原生的申请吗? 像exe或dmg。这是我的解决方案。 首先将项目作为maven项目,然后添加一些插件来击中目标; 我将分享我的pom.xml在你的pom.xml中添加这两个插件,然后在你的终端中运行“mvn jfx:native”。

    org.apache.maven.plugins maven-dependency-plugin 2.10   copy-dependencies package  false false true   copy-dependencies      com.zenjava javafx-maven-plugin 8.8.3   org.john.Main  exe  ${project.build.directory}/app ${project.build.directory}/native Ticket www.kvcoogo.com