外部jarをどこに配置しますか? [複製]
-
11-07-2019 - |
質問
この質問にはすでに回答があります:
- Eclipseでjarをインポートする方法 7つの答え
Eclipse(3.4)を使用しており、クラスは警告やエラーなしでコンパイルされます。 私のプロジェクトは外部jarファイルを使用しています。
別のプロジェクト(Eclipse以外)からこのクラスを使用するときに java.lang.NoClassDefFoundError
を取得しないために、この外部jarファイルをどこに配置する必要がありますか?
jarをプロジェクトフォルダーに抽出することはできましたが、それは正しくありません。
編集:この質問は、jarをEclipseにインポートすることではなく、Eclipseの外部で使用することです。
解決
EclipseプロジェクトにJARファイルを含める場合、通常はプロジェクトフォルダー内に「lib」フォルダーを作成し、そこにファイルを配置します。その後、Eclipseをクラスパスに含めるようにEclipseに指示して、Eclipse内でコードをコンパイルして実行する必要があります。
それを行うには:
-プロジェクトのプロパティに移動します
-左側の列で[Javaビルドパス]を選択します
-ウィンドウの中央部にある[ライブラリ]タブを選択します
-[JARの追加]ボタンをクリックします。これにより、Eclipseでプロジェクトのリストが表示されます。プロジェクトを展開してlibフォルダーに入れます。jarはそこにあります。
-JARを選択して[OK]をクリックし、プロパティウィンドウでもう一度[OK]をクリックします。
コードがコンパイルされて実行されます。
他のヒント
jre / lib / ext
フォルダーに入れてください
クラスパスについて述べられていることはすべて真実ですが、これは一貫して賢明な場所です。
WindowsでJAVA_HOME環境変数を調べると、jreフォルダーを見つけることができます。
どこに配置するかは重要ではありませんが、クラスパスに外部jarを配置するために、他のEclipse以外のプロジェクトを構成する必要があります-または、必要に応じて拡張機能ディレクトリメカニズムを使用します。 (それは簡単ですが、明示的にする方が間違いなく優れています。)
サイモンの答えは最高のようですが、今は少し時代遅れです。このOracleドキュメントインストール済み拡張機能をグーグルで検索してください。
Java 6の時点で、拡張機能JARファイルは特定のJREから独立した場所に配置できるため、システムにインストールされているすべてのJREで拡張機能を共有できます。
Windowsの場合は、ここで拡張機能を%SystemRoot%\ Sun \ Java \ lib \ extに配置する必要があると書かれています。
Eclipseワークスペースに含まれていないフォルダー、つまり、Eclipseにまったく依存しないフォルダーで、 -classpath
オプションを使用して参照する必要があります。
警告、 -cp
オプションで外部jarを参照する場合、 java -jar
で他のプロジェクトを実行できません(この質問を見る)
新しいフォルダに配置します。このフォルダーはビルドパスに含める必要があります。 Eclipseにあるか外部にあるかは関係ありません。 Eclipseにはプロジェクト固有のビルドパスがあり、このパスをjavacに渡します。 Eclipseの外部でjavacを実行する場合は、ビルドパスを手動で渡す必要があります。
これはまさにあなたが求めているものではないことを知っていますが、Mavenの使用を検討しましたか?アセンブリなどの一部のプラグインは、このような状況で役立つ場合があります。
James Camfieldが書いたように、Eclipse内にjarファイルを用意します。
次に、配布用にビルドする(Ant、Maven、手動)ときに、jarファイルがアプリケーションjarまたはwarまたはearまたは任意のファイルに含まれているか、または含まれていること、および起動スクリプトがVonCが書いたように、javaのclasspathコマンドラインオプション。
jarをJava拡張機能フォルダに固定することを心配しないでください。使用するサードパーティにコードを送信する際に忘れてしまうのは、セットアップされていないためです。終わりに。
共有libディレクトリを作成し、このjarファイルと他の一般的なjarファイルをそこに配置します。 Mavenを使用している場合は、ローカルリポジトリの形式で既に持っています。
Eclipseで、このディレクトリのクラスパス変数を作成し、それを使用してプロジェクト内のjarファイルを参照します。これらの条件を満たす複数のプロジェクトがある場合、生活がずっと楽になります。また、ローカルドライブからネットワークドライブに移動する場合、ルートディレクトリの場所を簡単に変更できます。
外部アプリでは、アプリクラスパス上の共有場所からこのjarファイルも含めます。