1

私には3つのプロジェクトがあり、RAD(Eclipse)ではそれらをA、B、Cと呼びましょう。Aは、BとCの両方が消費するサポートコードを備えた単純なJavaプロジェクトです。BとCは、どちらもWebSphere上で実行されるWebアプリケーションです。

私はBを作成しました。これには、ビルドパスのプロジェクト参照としてAが含まれ、web-inf/libにjarとして配置されるDeploymentAssemblyに含まれています。これは多かれ少なかれ完全に機能します。

Cは、他の誰かが書いた既存のプロジェクトであり、同じコードを適用する必要があります。同じトリックを試してみましたが(思ったのですが)、コンパイル時にAが見つかりましたが、テスト環境に公開するとクラスが見つかりませんでした。耳をエクスポートすると、CにはAを表すjarがあり、同様の場所にあることがわかります。ただし、Cにはjarのルート(戦争に隣接)にlibディレクトリがあります。A.jarは、戦争の1つ内のlib内にあります。

私は他のデプロイメントでこの余分なlibフォルダーを見たことがなく、設定を精査していて、それがどこから来たのかアイデアがありません。

だから私の質問は次のとおりです:1)そのルートlibフォルダーを生成しているものを誰かが知っていますが、もっと重要なのは... 2)私のクラスが見つからない理由...この余分なlibがどういうわけかそれを台無しにしていると思いますがA.jarはC.warのweb-inf/libにあります。

4

2 に答える 2

0

解決しました。これが何が起こったのかです。私の知らないうちに、同僚が実際に ear プロジェクトの下にセカンダリ lib ディレクトリを作成しました。彼はその ear の下で 2 番目の戦争を展開することを計画しており、共有ライブラリの場所が必要だったからです。

私はまだこの次の部分を理解していません。何らかの理由で、この lib ディレクトリはクラスパスに追加されただけでなく、A.jar が存在する web-inf/lib に取って代わったようです。彼のプロジェクトには (最終的に) A.jar も必要になるため、A.jar をそのフォルダーに生成することに満足しています。しかし、この代替ライブラリが作成されたときに web-inf/lib が機能しなくなった理由を理解したいと思います。

于 2013-02-27T15:25:35.913 に答える
0

これは EAR の として知られており、library-directoryすべてのモジュールからアクセスできるユーティリティ jar が含まれています。デフォルトは「lib」ですが、変更できます。

zip ツールを使用して ear ファイルを編集する必要があります -

  • 両方の WAR で A.jar が必要な場合は、lib フォルダーで試してください。WAR 内に必要なコードを含めないでください。
  • それ以外の場合は、ear ファイルを編集して、lib フォルダーから取り出します。
于 2013-02-27T14:54:04.780 に答える