1

eclipse indigo を使用して実行可能な jar を作成していたところ、次の 2 つのオプションがありました。

Extract required libraries into generated jar

Package required libraries into generated jar

最初のオプションを使用した作成では、アプリケーション パッケージとパッケージを含む jar ファイルのみが生成さMETA-INFれましたが、2 番目のオプションではorgパッケージも作成されました。

このorgパッケージは、サブフォルダーによってさらに拡張され、org> eclipse> jdt> internal> jarinjarloader. パッケージには、これjarinjarloaderまでに見たことのないいくつかのクラスが含まれていました。

これは、2 番目のオプションのマニフェスト ファイルです。

Manifest-Version: 1.0
Rsrc-Class-Path: ./
Class-Path: .
Rsrc-Main-Class: main.SimpleCalculator
Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader

mainは私のアプリケーション パッケージでSimpleCalculatorあり、私のメイン クラスです。

私の質問は次のとおりです。

1) これら 2 つのオプションはどのように異なり、2 番目のオプションによって追加されるこれらの新しいクラスは何ですか? また、2 番目のオプションのマニフェストにあるさまざまな名前と値のペアは何ですか?

2)また、実行可能ファイルを実行可能にするマニフェストファイルを除いて、実行不可能なjarファイルと実行可能なjarファイルの間に違いはありますか。(実行不可能なjarファイルを作成しているときにプロジェクトでメインクラスを指定するオプションを見つけたので、ここに何かが欠けているのでしょうか、それともEclipseが特別に役立つようにしているだけですか?)

注: これら 2 つのオプションについていくつか推測がありますが、それらは単なる推測です。

事前にサンクス!

4

2 に答える 2

2

1) これら 2 つのオプションの違いは何ですか?

実行可能なjarライブラリ処理オプションの違いは何ですか?

2) 2 番目のオプションによって追加されたこれらの新しいクラスは何ですか?

orgパッケージは jar-in-jar-loader 用です。それを使用package optionすると、太った瓶になり、メインクラスは本当のメインではなくなります。その場合はマニフェストを参照してください。

Antからですが、あなたはその考えを正しく理解していますか?

 <attribute name="Main-Class" value="org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader"/>
 <attribute name="Rsrc-Main-Class" value="YourRealMainClass"/>

3) また、マニフェスト ファイルを除いて、実行不可能な jar と実行可能な jar の間に違いはありますか?

私はそうは思いませんが、実行できないjarをEclipseからエクスポートすると、含めるファイルを指定できますが、より柔軟にはできません。

于 2013-01-16T11:20:34.230 に答える
2

最初の質問への回答は、最初のオプションは依存関係のクラス ファイルとリソースを抽出し、それらを jar ファイルにパッケージ化するというものです。このオプションを使用する場合は、ライセンスの問題に注意する必要があります。

2 番目のオプションについては、パッケージ化のみを行います。つまり、jar ファイルをそのまま jar ファイルに追加し、MANIFEST を通じてそれらを参照します。

実行可能な jar ファイルを作成するためのオプションがもう 1 つあります。これは、すべての依存関係 jar ファイルをプロジェクトの実行可能な jar に隣接するフォルダーに配置し、MANIFEST 内のそのフォルダー内の jar への参照を含めます。

2 番目の質問に対する答えは、はい、Eclipse は、選択した構成に基づいて実行可能な jar を作成できるように、ランタイム構成を使用して生活を少し楽にしようとしているということです。メインクラスを含むMANIFESTを手動で作成することにより、実行可能なjarを作成できます。

于 2013-01-16T11:25:44.670 に答える