4

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>
4

3 に答える 3