40

私はいくつかのApache HttpClient jarを使用しているので、それらをプロジェクトのlibディレクトリに置きます。Netbeansがプロジェクトをコンパイルすると、libがコピーされ、プロジェクトjarがdistディレクトリに生成されますが、webstartでプロジェクトを実行するときは、プロジェクト jar と lib を tomcat の ROOT ディレクトリにコピーします。Netbeans が lib ディレクトリにあるすべての jar を含むプロジェクト jar を生成できるかどうか疑問に思うので、プロジェクト jar と lib ディレクトリを tomcat の ROOT ディレクトリにコピーする必要はありません。Netbeans はそれを行うことができますか?

4

5 に答える 5

96

すべての依存ライブラリ (*.jar) を 1 つの myProject.jar にパッケージ化するのは非常に簡単です。

これらの手順に従うだけで、最終的にすべての依存ライブラリが 1 つの jar にパックされます。NetBeans を使用している場合は、正確に従うことができます。それ以外の場合は、プロジェクト ファイルでbuild.xmlファイルを見つける必要があります。

次の手順に従って、build.xmlを編集します。

1) Files tabNetBeans のプロジェクト パネルの左側にある をクリックします。

2) ファイルをダブルクリックして、次の行を行build.xmlの直前に追加します。</project>

 <target name="package-for-store" depends="jar">
    <property name="store.jar.name" value="myProject"/>
    <property name="store.dir" value="store"/>
    <property name="store.jar" value="${store.dir}/${store.jar.name}.jar"/>
    <echo message="Packaging ${application.title} into a single JAR at ${store.jar}"/>
    <delete dir="${store.dir}"/>
    <mkdir dir="${store.dir}"/>
    <jar destfile="${store.dir}/temp_final.jar" filesetmanifest="skip">
        <zipgroupfileset dir="dist" includes="*.jar"/>
        <zipgroupfileset dir="dist/lib" includes="*.jar"/>
        <manifest>
            <attribute name="Main-Class" value="${main.class}"/>
        </manifest>
    </jar>
    <zip destfile="${store.jar}">
        <zipfileset src="${store.dir}/temp_final.jar"
        excludes="META-INF/*.SF, META-INF/*.DSA, META-INF/*.RSA"/>
    </zip>
    <delete file="${store.dir}/temp_final.jar"/>
</target>

3)valueプロジェクト名に従って、コードの 2 行目を変更します。

<property name="store.jar.name" value="myProject"/> //<---Just value not name

4) 保存してbuild.xmlを右クリックし、[ターゲットの実行]を選択してから [その他のターゲット] を選択し、最後に [ストア用パッケージ] をクリックします。

5) これで完了です。これで、すべての依存ライブラリを含む最終的な完全な jar を含むフォルダーdistがあるように、フォルダーと同じように確認できます。storeライブラリを変更/追加する場合は、ステップ 4 に従ってください。

ステップ 4 の図

ここに画像の説明を入力

于 2014-11-08T08:42:11.263 に答える
12

OK、次のサイトで答えを見つけました: http://arunasujith.blogspot.com/2011/08/how-to-build-fat-jar-using-netbeans.html

于 2013-08-26T19:44:30.260 に答える
9

Robert Eckstein は、この問題の解決策を説明しています。次のコードを に貼り付けるだけですbuild.xml。ライブラリはすべて自動的に検出されます。

どうぞ:

<target name="-post-jar">

    <!-- Change the value to the name of the final jar without .jar -->
    <property name="store.jar.name" value="MyJarName"/>

    <!-- don't edit below this line -->
    <property name="store.dir" value="dist"/>
    <property name="temp.dir" value="temp"/>
    <property name="store.jar" value="${store.dir}/${store.jar.name}.jar"/>

    <echo message="Packaging ${application.title} into a single JAR at ${store.jar}"/>

    <delete dir="${temp.dir}"/>
    <mkdir dir="${temp.dir}"/>

    <jar destfile="${temp.dir}/temp_final.jar" filesetmanifest="skip">
        <zipgroupfileset dir="dist" includes="*.jar"/>
        <zipgroupfileset dir="dist/lib" includes="*.jar"/>

        <manifest>
            <attribute name="Main-Class" value="${main.class}"/>
        </manifest>
    </jar>

    <delete dir="${store.dir}"/>

    <zip destfile="${store.jar}">
        <zipfileset src="${temp.dir}/temp_final.jar"
        excludes="META-INF/*.SF, META-INF/*.DSA, META-INF/*.RSA"/>
    </zip>

    <delete dir="${temp.dir}"/>

</target>
  1. build.xml に移動し、最後のプロジェクト終了タグの直前にコードを追加します。

  2. コメントされているように、最初のプロパティフィールドの値を変更します

  3. [クリーン & ビルド] をクリックすると、jar が dist フォルダーに配置されます。

参考リンク: https ://stackoverflow.com/a/30172829/2761273

于 2015-05-11T16:31:19.273 に答える
1

さて、これが私の解決策です。私もプログラムのコンパイルと Netbeans での実行に問題がありましたが、試してみると失敗しましたjava -jar MyJarFile.jar。今、私はMavenを完全には理解していません。これが、Netbeans 8.0.2が私のjarファイルをライブラリに含めてjarファイルに入れるのに問題があった理由だと思います。Eclipse で Maven を使用せずに jar ファイルを使用する方法について考えていました。

Netbeans ではなく、すべての依存関係とプラグインをコンパイルするのは Maven です。(Netbeans でこれを行うことができる場合は、その方法を教えてください。)

[解決済み - Linux の場合] ターミナルを開く。

それで

cd /MyRootDirectoryForMyProject

mvn org.apache.maven.plugins:maven-compiler-plugin:compile

mvn install

これにより、ターゲット ディレクトリに jar ファイルが作成されます。

MyJarFile-1.0-jar-with-dependencies.jar

cd target

(実行する必要があるかもしれません: chmod +x MyJarFile-1.0-jar-with-dependencies.jar) そして最後に

java -jar MyJarFile-1.0-jar-with-dependencies.jar

参照してください

https://cwiki.apache.org/confluence/display/MAVEN/LifecyclePhaseNotFoundException

于 2015-02-13T00:39:05.800 に答える