52

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

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

jar をプロジェクト フォルダーに抽出することもできますが、それは適切ではありません。

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

4

9 に答える 9

61

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

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

コードがコンパイルされて実行されます。

于 2008-11-28T11:28:12.673 に答える
24

jre/lib/extあなたのフォルダに入れます

クラスパスについて言われていることはすべて真実ですが、これはそれが存在する一貫した賢明な場所です。

Windows の JAVA_HOME 環境変数を見ると、jre フォルダーを見つけることができます。

于 2008-11-28T11:23:51.810 に答える
7

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

于 2008-11-28T11:20:58.150 に答える
6

サイモンの答えは最高のようですが、今は少し時代遅れです。この Oracle doc Installed extensionsをグーグルで検索しました。

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

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

于 2013-12-24T11:12:00.217 に答える
1

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

警告、オプションjava -jarで外部jarを参照すると、他のプロジェクトを実行できません(この質問を参照してください)-cp

于 2008-11-28T11:23:16.943 に答える
0

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

于 2008-11-28T11:21:05.403 に答える
0

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

于 2008-11-28T11:32:42.087 に答える
0

James Camfield が書いているように、Eclipse 内に jar を用意してください。

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

jar を Java 拡張機能フォルダーに貼り付けることを心配する必要はありません。コードをサード パーティに送信して使用するときに忘れてしまうだけです。 .

于 2008-11-28T11:43:59.027 に答える
0

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

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

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

于 2008-11-28T14:23:56.050 に答える