捆绑了依赖项的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