javafxpackagerを使用してJavaFXjarを作成することについて質問しました。ここで確認できます。私の問題は、マニフェストにクラスパスを含めることができなかったことです。さて、答えを待っている間、maven-antrun-plugin
代わりにやってみました。それはうまく機能し、依存関係を使用してアプリケーションを実行できましたが、(常に存在しますが)最終的なjarの外部の依存関係を使用する場合のみです。だからそれはそのようなものです:
FinalJar.jar
lib
|_{all dependencies here}
私のマニフェストファイルは、プロパティを介して依存関係を指していJavaFX-Class-Path
ます。必要に応じて、依存関係をjar内に配置すると、依存関係が見つかりません。何か助けはありますか?
編集: pom.xml内のjarに依存関係を追加する手順は次のとおりです。
<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>