7

Tomcat 6とEclipseを使用して動的Webアプリケーションをデプロイするときに使用しているサードパーティライブラリ(JARファイル)の提供に問題があります。

WebアプリケーションプロジェクトがこれらのJARに直接依存しているセットアップでこれを行う方法を私は知っていることに注意してください。

ただし、私のセットアップでは、2つのEclipseプロジェクトがあります。

  • coreはクラスライブラリであり、たとえばに依存しますa.jar
  • webはWebアプリケーションであり、コアに依存します。

Webのプロジェクト設定のDeploymentAssemblyカテゴリにコアを追加したので、Eclipse(またはTomcat-ここで責任のあるアクターが誰であるかはよくわかりません)がWebアプリケーションcore.jarのディレクトリに配置しています。libs

問題は次のとおりです。Webアプリケーションを試してみると、コアがからクラスにアクセスするとaNoClassDefFoundErrorがスローされます。私はこれについて何をすべきですか?WebアプリケーションのDeploymentAssembly設定ページに配置することは、コアプロジェクトが依存するWebプロジェクトとは無関係であるため、適切なソリューションではないと思います。a.jara.jar

基本的に、コアの依存関係をに「埋め込む」ようにEclipse(Tomcat?)を構成する方法を探していますcore.jar。これに関する問題は、 Webプロジェクトcore.jarをデプロイするときに自動的に生成されることです。

ヘルプは非常にありがたいです。前もって感謝します!

4

4 に答える 4

11

さて、その間に私は自分で答えを見つけました。

将来これを読む人のために、元のメッセージで紹介したセマンティクスを使用して、段階的に説明します。

まず、コアプロジェクトのプロパティページを開き、[Javaビルドパス]設定の[ライブラリ]タブに移動します。

ここに画像の説明を入力してください

a.jar「JARの追加...」を介して、コアプロジェクトが依存するクラスライブラリを必ず追加してください。次に、[注文とエクスポート]タブに移動し、エクスポートするために追加したものをアクティブにa.jarします。

ここに画像の説明を入力してください

次に、[Deployment Assembly]設定に移動し、a.jar最初に[Add ...]をクリックしてから、[Java Build Path Entrances]をクリックし、最後にを選択して、ここに追加しますa.jara.jar:のデプロイパスとして必ず「../」を入力してください。

ここに画像の説明を入力してください

これで、コアプロジェクトは完了です。次に、 Webプロジェクトの「Javaビルドパス」設定の「プロジェクト」ページを開き、「追加...」をクリックしてコアプロジェクトを追加します。

ここに画像の説明を入力してください

最後に、[Deployment Assembly]設定ページに移動し、[Add ...]を押してから、[Project]を選択し、次の画面でコアプロジェクトを選択します。

ここに画像の説明を入力してください

完了です。Webプロジェクトにコアの依存関係を追加する必要はありません。

于 2012-10-03T22:18:20.470 に答える
0

私の知る限り、Eclipseはあなたのためにそれをしません。プロジェクトの依存関係はコンパイル時のものです。プロジェクトにまたがる実行時の依存関係は、ユーザーが処理する必要があります。ユーザーライブラリを作成するために使用できる1つのトリック。「設定」->「Java」->「ビルドパス」->「ユーザーライブラリ」に移動します。新しいユーザーライブラリを作成します。'コア'プロジェクトが依存するすべてのjarを追加します。'core'プロジェクトと'web'プロジェクトの両方への依存関係として追加します。これを行うには、プロジェクト->ビルドパス->ビルドパスの構成->ライブラリタブ->ライブラリの追加...を右クリックします。

お役に立てれば

于 2012-06-19T07:11:16.393 に答える
0

ファイルを自動的にコンパイルし、非常にうまく機能するMavenを使用することをお勧めします。jarEclipseMaven

于 2012-06-19T07:24:15.873 に答える
0

Gradle-Projectを使用している場合は、サブプロジェクトのbuild.gradleに「eclipse-wtp」プラグインが含まれていることを確認してください。

于 2020-12-11T12:25:31.967 に答える