2012-03-15 10 views
9

これはおそらく基本的な質問ですが、私はJavaについてよく知らないので、どこでも答えを見つけることができませんでした。すべての依存関係を含むJARを構築してください

私はTFS SDKに依存するAntライブラリを構築しようとしています。私はプロジェクトをセットアップするにthe guideに従ったが、私は、JARとしてエクスポートし、ANTを使用してタスク、私は次のエラーを取得する実行しようとすると:

java.lang.NoClassDefFoundError: /com/microsoft/tfs/core/util/TFSUser 

を私はANTにTFS SDKのJARを入れることができます実現しますlibフォルダに保存することができますが、可能であればJARファイルに含めることができます。

This answer(私は3.7.2を使用しています)Eclipseを使用して実行するために必要なすべてのリソースを含めることは可能ですが、実際に行う方法は詳しくは説明していません。 Eclipseでこれを行うためのオプションは何ですか?

+0

@続きを読みますか? –

答えて

3

エクスポートを実行するときに、「生成されたJARに必要なライブラリを抽出する」を選択します。

Extract required libraries into generated JAR

エクスポートを行うと「生成されたJARに抽出必要なライブラリ」を選択します。

+0

Alt-PrintScrはダイアログボックスをキャプチャするのに適しています。 –

+0

10-4。その画像を編集できるかどうかがわかります。ありがとう。 – Java42

+0

BTW、そのほかのオプション「生成されたJARへのライブラリのパッケージ化」も「ほとんどの場合」機能します。 Eclipseが生成したフックをマニフェストに追加しますが、フックが私の環境では動作しないため、時にはフックが機能しないため、時にはフックが覚えていません。以下のようになります:Rsrc-Main-Class:Test メインクラス:org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader – Java42

3

Eclipseではなく、ファイル - >エクスポート - > Java - >実行可能なJARファイルを使用します。

「生成されたJARに必要なライブラリを抽出する」が必要です。

1

jarをビルドすると、Jarに必要な依存関係ではなく、コードだけを含むJARが得られます。 jarjarのようなものを使用して、すべての依存関係を1つのJarファイルを管理しやすくするか、すべての依存JARをフォルダにコピーして使いやすくすることができます。 Eclipseにもこのようなことをするオプションがあるようです(上記の記事を参照)。

もう1つのオプションは、MavenまたはIvyなどの依存関係管理システムを使用することです。これは、より高い学習曲線を持っていますが、ライブラリの場合は、ライブラリのユーザがすべての依存関係を簡単に取得できるので、ライブラリにとって価値があります。エンドユーザアプリケーションの場合は、単一の配布可能ファイルがより良いオプションになります(MavenやIvyを使用して依存関係を内部的に管理し、jarjarやJava Web Startなど)。

0

あなたがmavenでやっているのであれば、次のプラグインを含める必要があります。

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <version>2.4</version> 
    <configuration> 
     <descriptorRefs> 
     <descriptorRef>jar-with-dependencies</descriptorRef> 
     </descriptorRefs> 
     <properties> 
      <property> 
       <name>listener</name> 
       <value>com.example.TestProgressListener</value> 
      </property> 
     </properties> 
    </configuration> 
    <executions> 
     <execution> 
      <id>make-assembly</id> <!-- this is used for inheritance merges --> 
      <phase>package</phase> <!-- bind to the packaging phase --> 
      <goals> 
       <goal>single</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

あなたの蟻ファイルを投稿することができますhow do I build JAR file with dependencies?

関連する問題