11

Java アプリケーションがあり、JAR ファイルを作成してデプロイしました。

アプリは、Log4J JAR などの外部 JAR を使用します。JAR ファイルを作成するときに、すべての外部依存 JAR をアーカイブに含めるにはどうすればよいですか?

アプリを機能させるには、Log4J JAR を自分の JAR と同じディレクトリにコピーする必要があります。これは、jar の目的を少し無効にします。単一の JAR ファイルをデプロイする方がエレガントではないでしょうか?

4

6 に答える 6

7

Eclipseを使用している場合は、次のように、含まれているすべてのファイルを1つの実行可能なjarに抽出できます。

  1. パッケージエクスプローラーからプロジェクト名を右クリックし、[エクスポート]を選択します。
  2. [エクスポート]画面で、[Java]-> [実行可能なJARファイル]を選択し、[次へ]を選択します。
  3. Runnable JARFileSpec画面に入力して終了します。

依存関係jarを個別のjarファイルとしてパッケージ化するか、生成されたJARに抽出するかを選択できます。

于 2013-01-16T22:02:11.883 に答える
4

One-JAR のようなものを使用して、Java アプリケーションとその依存関係を単一の実行可能な Jar ファイルにパッケージ化できます (One-JAR はカスタム クラスローダーを使用して、JAR のネストを可能にします)。

于 2010-09-16T16:35:15.787 に答える
2

特定の JAR のみを新しいバージョンに簡単にアップグレードできるため、JAR を個別に保持することをお勧めします。他の構成には影響しません。各ファイルを JAR と同じ場所にコピーする必要があるという問題があるため、いつでも JavaCLASSPATHを使用して、任意の JAR をアプリケーションのクラス パスに含めることができます。

于 2010-09-16T18:18:22.070 に答える
2

ライブラリ jar をコンパイル済みのクラスと同じ場所に展開し、そこから jar を作成する必要があります。ビルド プロセスの設定方法によっては、これを実現する方法が複数ある場合があります。これはロケット科学ではありません。jar は、ルート レベルに META-INF ディレクトリを持つ単なる zip アーカイブです。

于 2010-09-16T16:42:49.407 に答える
0

Maven + アセンブリ プラグインを使用できます ( http://maven.apache.org/plugins/maven-assembly-plugin/ )

ところで、Maven を使用していない場合、これはおそらく最も簡単な方法ではありません。

于 2010-09-16T17:21:05.430 に答える
0

あなたが発見したように、JAR自体は他のJARをネストすることはできません。

従来は、アプリケーション JAR (自分のもの) とサポート JAR をクラスパス アクセス用の適切な場所に展開する ZIP アーカイブまたはその他のインストーラーを配布していました。その後、多くの場合、アプリケーションは、プライマリ JAR を呼び出し、サポート JAR をリストするクラスパスを作成するスクリプトを介して呼び出されました。

他の投稿者が指摘しているように、必要に応じてスーパー JAR を作成するオプションがいくつかあります。

于 2010-09-16T17:12:48.547 に答える