私はいくつかの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はそれを行うことができますか?
OK、次のサイトで答えを見つけました: http://arunasujith.blogspot.com/2011/08/how-to-build-fat-jar-using-netbeans.html
すべての依存ライブラリ(* .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の画像
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に移動して、最後のプロジェクト終了タグの直前にコードを追加します。
次に、最初のプロパティフィールドの値をコメントに応じて変更します
Clean&Buildをクリックすると、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
<!-- 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}"/>