1

私はJava、特にEclipseにはかなり慣れていないので、無知であることをお許しください。サーバーからプロジェクトを取得し、それを自分のマシンにローカルにコピーしました。ワークスペースを開いたときに、jar が見つからないために多くのエラーが発生しました。コピー元のサーバーと同じディレクトリ構造を持っていないため、これは理にかなっています。同じ外部 jar を自分のマシンにコピーし、それをコンパイルして jar に変換し、それをサーバーにコピーすると、機能しますか? それとも、外部 jar が予想とは異なる場所にあるために失敗しますか?

また、この問題を回避するために、外部ジャーを通常のジャーに入れる必要がありますか?

4

3 に答える 3

2

あなたは大丈夫なはずです。Java は、クラスパスと呼ばれるものを使用して依存関係を見つけます。開発マシンではクラスパスが異なる場合がありますが、すべての依存関係が本番環境のクラスパスにある限り、すべてが機能するはずです。

ディレクトリ構造の同期に関する問題を回避するための最も一般的な方法は、Maven を使用することです。これにより、すべての依存関係が管理されます (ただし、Maven のプロジェクト記述子である pom.xml を管理する必要があります)。少し厄介な方法は、プロジェクトに依存関係を持たせることですが、多くのプロジェクトに同じ jar を含める必要があり、バージョンの競合などが発生する可能性があります。

小規模なプロジェクトの場合は、依存関係を自分で管理できますが、大規模なプロジェクトでは、(Maven のように) 戦略を練る必要があります。

実行可能な jar に関しては、<jarfile>:\META-INF\MANIFEST.MF の Class-Path エントリが正しいことを確認してください。たとえば、他の jar を参照している場合、それらの jar は本番環境に存在します。たとえば、ourjar.jarこれが MANIFEST.MF のスニペットであると仮定します。

Class-Path: lib/myteamjar.jar

次に、次のディレクトリ構造が配置されていることが期待されます。

lib/myteamjar.jar
ourjar.jar
于 2012-05-01T13:34:07.463 に答える
0

Java と Eclipse にかなり慣れていない人には、Maven をお勧めしません。Eclipse のことも忘れてしまいます。

パッケージングと CLASSPATH に問題があります。それに集中してください。

どのようなプロジェクトについて話しているのですか?得られる答えは、作成しているアプリの種類によって異なります。実行可能な JAR ですか? それを行う正しい方法は、JAR マニフェストの CLASSPATH が期待するとおりにレイアウトされた ZIP ファイルにすべてをパッケージ化することです。

Web アプリの場合、正しいのは WAR ファイルで、アプリに必要なすべての JAR が WEB-INF/lib ディレクトリにあります。

物事を適切にパッケージ化すると、すべてが正しい方法で配置された単一のパッケージになるはずです。それをサーバーにデプロイして、すべてを機能させることができるはずです。

于 2012-05-01T13:40:01.160 に答える
0

いいえ、外部 jar の場所は関係ありません。やりたいことは、クラスパスに外部 jar を配置することです。その方法は、Java コードの実行方法によって異なります。コマンドを使用して CLI から実行している場合javaは、クラスパスを引数として使用します。コードを Eclipse でビルド/実行する場合は、プロジェクトを右クリックし、[ビルド パス] > [ビルド パスの構成...] を選択して、[JAR の追加...] ボタンを使用して jar を追加します。開いているプロジェクトの一部を開き、[外部 JAR を追加...] をクリックして、プロジェクトの外部にある jar を追加します。クラスパスの詳細については、ツールの特定のドキュメントを参照してください。

于 2012-05-01T13:38:21.437 に答える