我刚刚提出了一个关于使用 javafxpackager 制作 JavaFX jar 的问题,你可以在这里看到。我的问题是我无法在清单中包含类路径。好吧,当我在等待答案时,我尝试maven-antrun-plugin
了。它工作得很好,我可以使用依赖项运行我的应用程序,但是(总是有一个但是)只有在我的最终 jar 之外的依赖项。所以它是这样的:
FinalJar.jar
lib
|_{all dependencies here}
JavaFX-Class-Path
我的清单文件通过属性指向依赖项。如果我将依赖项放入 jar 中,就像我想要的那样,它不会找到我的依赖项。有什么帮助吗?
编辑:这是将依赖项添加到 jar 中的步骤,它在 pom.xml 中:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<phase>package</phase>
<configuration>
<target>
<taskdef name="jfxjar" classname="com.sun.javafx.tools.ant.FXJar"
classpathref="maven.plugin.classpath" />
<jfxjar
destfile="${project.build.directory}/dist/${project.build.finalName}">
<fileset dir="${project.build.directory}/classes" />
<!-- Adds the dependencies to jar -->
<fileset dir="${project.build.directory}/lib/" includes="*.jar" />
<application name="${project.name}" mainClass="com.google.code.mzplay.principal.PrincipalFX" />
<resources>
<!-- Adds the dependencies to classpath -->
<fileset dir="${project.build.directory}/lib/" includes="*.jar" />
</resources>
</jfxjar>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ant-javafx</artifactId>
<version>${javafx.version}</version>
<systemPath>${java.home}/../lib/ant-javafx.jar</systemPath>
<scope>system</scope>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>javafx</artifactId>
<version>${javafx.version}</version>
<systemPath>${java.home}/lib/jfxrt.jar</systemPath>
<scope>system</scope>
</dependency>
</dependencies>
</plugin>