web-dev-qa-db-ja.com

libのjarをNetbeansのプロジェクトjarファイルに含める方法

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

34
Frank

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

11
Frank

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

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

build.xmlを編集するには、次の手順に従います

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

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)プロジェクト名ごとに、コードの2行目のvalueを変更します。

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

4)保存して、build.xmlを右クリックし、ターゲットの実行を選択してからその他のターゲットを選択し、最後にパッケージ- for-store

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

ステップ4の画像

enter image description here

74

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. Clean&Buildをクリックすると、jarがdistフォルダーにあります

参照リンク: https://stackoverflow.com/a/30172829/276127

6
Deniz Celebi

さて、これが私の解決策です。私も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

1
mycowan
  1. mainClassメインファイルが[プロパティ]> [実行]でメインファイルとして更新されていることを確認します。
  2. プロジェクトタグを閉じる前に、Build.xmlを次のコードで更新します
<!-- 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}"/>
  1. [プロパティ]> [パッケージ]> [すべてチェック]
  2. きれいにして構築する
  3. サーバーにアップロードします。
1
gshivam63