9

Eclipse 3.7 Indigo for Java EE Developersを使用する場合、 DeploymentAssemblyと呼ばれるものがあります。私はグーグルで見つけて、それが J2EEモジュールの依存関係に似ていることを理解しました。そこでは、jarを選択でき、EARフォルダーまたはWARの場合はWEB-INF/libに配置されます。今私が持っている疑問は、

JavaProjectの依存関係があります。クラスパス変数を介してすべての依存Jarを追加しました。これで、依存関係プロジェクトが依存関係としてWebプロジェクトTestWebProjectに追加されました。Webプロジェクトのコンパイルは正しいですが、実行時にjarが見つからなかったためにエラーが発生します。スタンドアロンプ​​ロジェクトであるDeploymentAssemblyofDependenciesProjectでこれを修正できます。

問題は、最初にスタンドアロンプ​​ロジェクトであるため、デプロイメントアセンブリでjarを修正する必要があった理由です。次に、このデプロイメントアセンブリがない場合、これをどのように修正できますか?

4

3 に答える 3

16

私はグーグルで見つけることができ、それがJ2EEモジュールの依存関係に似ていることを理解しました

Eclipse 3.5 までは「J2EE Module Dependencies」と呼ばれていました。そのバージョン以降、「展開アセンブリ」に名前が変更されました。しかし、Java EE Web プロジェクトの場合も事実上同じです。


問題は、スタンドアロン プロジェクトであるため、展開アセンブリで jar を修正しなければならなかった理由です。

このようにして、Eclipse はプロジェクトの JAR ファイルを自動ビルドし/WEB-INF/lib、Web プロジェクトのデプロイメントに配置するためです。そうしないと、JAR は webapp の実行時に使用できず、コンパイル時にのみ使用できます。Eclipse は、サーバー独自の/lib.


この展開アセンブリがない場合、どうすれば修正できますか?

JAR を手動でビルド/エクスポートし、webapp 独自/WEB-INF/libまたはサーバー独自の にドロップします/lib。ただし、「展開アセンブリ」構成はより簡単で、推奨される方法です。

以下も参照してください。

于 2012-06-20T19:05:17.663 に答える
5

WAR をアセンブルするとき、Eclipse は、ビルド パスの依存関係を調べるだけでは、それらが WAR の WEB-INF/lib ディレクトリにバンドルされるべきものなのか、それともサーバーのクラスパスで利用できると予想されるものなのかを判断できません。これらのケースを区別するには、追加のメタデータが必要です。

問題ビューを見ると、次のような多数の警告が表示されるはずです。

「クラスパス エントリ [何か] はエクスポートまたは公開されません...」

これらを右クリックして、「クイック修正」を選択します。利用可能な修正を示すダイアログが表示されます。そのうちの 1 つは、「関連付けられたクラスパス エントリをパブリッシュ/エクスポートの依存関係としてマークします...」のようなことを言います。そのオプションを使用してください。

上記は、Java プロジェクトの .classpath ファイルにわずかな変更を加えて、アセンブリに含める依存関係にタグを付けます。WARファイルをエクスポートしてWEB-INF/libフォルダの内容を確認することで、実行せずにテストできます。

于 2012-06-20T19:04:41.493 に答える
1

ビルド パス - ここに jar を直接配置します。コードの実行時とコンパイル時に使用できます。

デプロイメント・アセンブリー - Eclipse は、このパスの下のプロジェクトがバンドルされ、web-inf/lib フォルダーに .jar としてデプロイされることを想定しています。コンパイル時と実行時の両方で使用できるようにします。プロジェクトが展開アセンブリに展開されていない場合、コードはコンパイル時にのみ使用でき、Eclipse はそれをバンドルせず、実行時に依存プロジェクトをコードに使用できません。

于 2015-07-27T08:01:34.503 に答える