私はいくつかのApache HttpClient jarを使用しているので、それらをプロジェクトのlibディレクトリに置きます。Netbeansがプロジェクトをコンパイルすると、libがコピーされ、プロジェクトjarがdistディレクトリに生成されますが、webstartでプロジェクトを実行するときは、プロジェクト jar と lib を tomcat の ROOT ディレクトリにコピーします。Netbeans が lib ディレクトリにあるすべての jar を含むプロジェクト jar を生成できるかどうか疑問に思うので、プロジェクト jar と lib ディレクトリを tomcat の ROOT ディレクトリにコピーする必要はありません。Netbeans はそれを行うことができますか?
5 に答える
すべての依存ライブラリ (*.jar) を 1 つの myProject.jar にパッケージ化するのは非常に簡単です。
これらの手順に従うだけで、最終的にすべての依存ライブラリが 1 つの jar にパックされます。NetBeans を使用している場合は、正確に従うことができます。それ以外の場合は、プロジェクト ファイルでbuild.xmlファイルを見つける必要があります。
次の手順に従って、build.xmlを編集します。
1) Files tab
NetBeans のプロジェクト パネルの左側にある をクリックします。
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 の図
OK、次のサイトで答えを見つけました: http://arunasujith.blogspot.com/2011/08/how-to-build-fat-jar-using-netbeans.html
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>
build.xml に移動し、最後のプロジェクト終了タグの直前にコードを追加します。
コメントされているように、最初のプロパティフィールドの値を変更します
[クリーン & ビルド] をクリックすると、jar が dist フォルダーに配置されます。
さて、これが私の解決策です。私もプログラムのコンパイルと 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