2

ANT を使用して、すべてのライブラリを JavaFX アプリケーション用の 1 つの jar にバンドルしようとしています。次の ant を使用したバンドル jar の作成を見つけましたが、動作させることができませんでした。ライブラリ *.jar ファイルを追加するには、以下<fx:jar>を追加し<fileset>ます。

<fileset dir="build" includes="libs/*.jar"></fileset>

buildディレクトリには次が含まれます。

build
  |-- classes (compiled classes)
  |-- libs (external libraries)
  |-- src (sources)

生成された jar には、libsすべてのライブラリを含むディレクトリが含まれています。

libs生成されたjarに、jarの外側ではなくjarの内側のディレクトリを調べる必要があることをどのように伝えることができますか?

ありがとう!

4

1 に答える 1

5

ありがとうございます!

これらのライブラリを JavaFX で動作させることはできませんでした。しかし、私はこれを見つけました: https://community.oracle.com/message/10266894

したがって、<fx:jar>すべてのライブラリを解凍して再パックすると、機能します。

<target name="do-deploy-bundle" depends="init-properties, do-deploy-dist">
    <property name="tmp.file" value="temp_final.jar"/>

    <delete file="${dist.dir}/${app.jar}" />
    <delete dir="${bundle-dist.dir}"/>
    <mkdir dir="${bundle-dist.dir}"/>

    <jar destfile="${bundle-dist.dir}/${tmp.file}" filesetmanifest="skip">
        <zipgroupfileset dir="${dist.dir}" includes="*.jar" />
        <zipgroupfileset dir="${dist.dir}/libs" includes="*.jar" />

        <manifest>
            <attribute name="Implementation-Vendor" value="${app.vendor}"/>
            <attribute name="Implementation-Title" value="${app.name}"/>
            <attribute name="Implementation-Version" value="${app.version}"/>
            <!--<attribute name="Main-Class" value="com.javafx.main.Main" />-->
            <attribute name="Main-Class" value="com.poterion.texovac.application.Main" />
            <attribute name="JavaFX-Version" value="2.2" />
            <attribute name="JavaFX-Feature-Proxy" value="None"/>
            <!--<attribute name="JavaFX-Application-Class" value="com.poterion.texovac.application.Main" />-->
            <attribute name="Created-By" value="JavaFX Packager" />
        </manifest>
    </jar>

    <zip destfile="${dist.dir}/${app.jar}">
        <zipfileset src="${bundle-dist.dir}/${tmp.file}" excludes="META-INF/*.SF, META-INF/*.DSA, META-INF/*.RSA , META-INF/maven/**,META-INF/*.txt" />
    </zip>

    <delete file="${bundle-dist.dir}/${tmp.file}" />
    <delete dir="${bundle-dist.dir}"/>
</target>
于 2014-01-11T13:17:56.667 に答える