web-dev-qa-db-ja.com

外部jarをどこに配置しますか?

Eclipse(3.4)を使用すると、クラスは警告やエラーなしでコンパイルされます。私のプロジェクトは外部jarファイルを使用しています。

(Eclipseではない)別のプロジェクトからこのクラスを使用するときにJava.lang.NoClassDefFoundErrorを取得しないために、この外部jarファイルをどこに配置する必要がありますか?

Jarをプロジェクトフォルダーに展開することはできましたが、それは正しくありません。

編集:この質問は、jarをEclipseにインポートすることではなく、Eclipseの外部で使用することです。

46
Burkhard

EclipseプロジェクトにJARファイルを含めたい場合、通常はプロジェクトフォルダー内に「lib」フォルダーを作成し、そこにファイルを配置します。次に、コードをコンパイルしてEclipse内で実行できるように、クラスパスに含めるようEclipseに指示する必要があります。

それを行うには:
-プロジェクトのプロパティに移動します
-左側の列で「Java Build Path」を選択します
-ウィンドウの中央部にある[ライブラリ]タブを選択します
-[JARの追加]ボタンをクリックします。これにより、Eclipseでプロジェクトのリストが表示されます。プロジェクトを展開し、libフォルダーに移動します。jarはそこにあります。
-JARを選択して[OK]をクリックし、プロパティウィンドウでもう一度[OK]をクリックします。

これで、コードがコンパイルおよび実行されます。

57
James Camfield

jre/lib/extフォルダ

クラスパスについて述べられていることはすべて真実ですが、これはそれが生きるための一貫した賢明な場所です。

windowsでJava_HOME環境変数を調べると、jreフォルダーを見つけることができます。

19
Simon

どこに配置するかは重要ではありませんが、外部jarをクラスパスに配置するように、他のEclipse以外のプロジェクトを構成する必要があります-または、必要に応じて拡張機能ディレクトリメカニズムを使用します。 (それは簡単ですが、明らかにする方が間違いなく優れています。)

7
Jon Skeet

サイモンの答えは最高のようですが、今は少し時代遅れです。このOracleドキュメントをグーグルで検索してください インストール済み拡張機能 .

Java 6の時点で、システムにインストールされているすべてのJREで拡張機能を共有できるように、特定のJREから独立した場所に拡張機能JARファイルを配置することもできます。

Windowsでは、拡張機能を%SystemRoot%\ Sun\Java\lib\extに配置する必要があると書かれています。

5
user3132194

Eclipseワークスペースに含まれていないフォルダー、つまりEclipseにまったく依存しないフォルダーで、-classpathオプションを使用して参照する必要があります。

警告、Java -jarオプションで外部jarを参照する場合、-cpで他のプロジェクトを実行することはできません( この質問を参照

1
VonC

新しいフォルダーに配置します。このフォルダーはビルドパスに含める必要があります。 Eclipseにあるか外部にあるかは関係ありません。 Eclipseにはプロジェクト固有のビルドパスがあり、このパスをjavacに渡します。 Eclipseの外部でjavacを実行する場合は、ビルドパスを手動で渡す必要があります。

0
guerda

これはまさにあなたが求めているものではないことを知っていますが、Mavenの使用を検討しましたか? Assemblyなどのプラグインの一部は、このような状況で役立つ場合があります。

0
javamonkey79

James Camfieldが書いたように、Eclipse内にjarを用意します。

次に、配布用に(Ant、Maven、手動で)ビルドする場合、jarファイルがアプリケーションjarまたはwarまたはearまたは任意のファイルに含まれているか、または含まれていること、および起動スクリプトが-classpathコマンドラインを使用してクラスパスに含まれていることを確認しますVonCが書いたように、Javaのオプション。

JarをJava extensionsフォルダに貼り付けることを心配しないでください。コードを第三者に送信して使用する際に、忘れてしまうだけです。最後に設定しないでください。

0
JeeBee

共有libディレクトリを作成し、このjarファイルと、そこにあるかもしれない他の一般的なjarファイルを配置します。 Mavenを使用している場合は、ローカルリポジトリの形式で既に持っています。

Eclipseで、このディレクトリのクラスパス変数を作成し、それを使用してプロジェクト内のjarファイルを参照します。これらの条件を満たす複数のプロジェクトがある場合、生活がずっと楽になります。また、ローカルドライブからネットワークドライブに移動する場合、ルートディレクトリの場所を簡単に変更できます。

外部アプリでは、アプリのクラスパス上の共有場所からこのjarファイルも含めます。

0
Robin