web-dev-qa-db-ja.com

Eclipseビルドパスでユーザーライブラリを使用する場合のClassNotFoundException

IDE内で実行されているTomcat 7でEclipse 3.7(STS)を使用しています。新しいダイナミックWebプロジェクトを作成し、1つのJSPファイルをWebコンテンツのルートフォルダーに追加しました。 Tomcatを実行し、Eclipse内からJSPに問題なくアクセスできます。

ユーザーライブラリからプロジェクトにいくつかのサードパーティJARを追加しました(mavenまたは自動依存管理を使用していません)。 JSPでは、プロジェクトのJARファイルからクラスを参照しますが、これを問題なくコンパイルできますが、Tomcatにデプロイすると、JSPはClassNotFoundExceptionをスローします。明らかに、Tomcatはライブラリ設定からJARを見つけることができません。 Tomcatサーバーの実行構成を作成しようとし、プロジェクトのクラスパス設定と一致するようにクラスパスを設定しましたが、同じclassnotfound問題が発生します。

問題を回避するには、すべてのプロジェクトJARをWEB-INF/libディレクトリに手動でコピーして、webappがすべての依存関係を見つけられるようにしますが、それはばかげているし、メンテナンスの悪夢であるため、それが解決策になるとは思いません。

何か不足していますか?

39
user646584

プロジェクトのプロパティで、Deployment Assemblyに移動します。ユーザーライブラリとして手動で追加したbuildpathエントリもそこに追加します。最終的には/WEB-INF/libデプロイされたWARの。

enter image description here

96
BalusC

JarファイルをWEB-INF/libフォルダーにコピーする必要があります:そこにあるはずです。

Eclipseは、すべての依存関係を含むWARファイルを生成するオプションを提供する必要があります:私はしばらくの間Webツールを使用していませんが、何らかの方法ですべての依存関係がWEB-INF/libにある必要がありますか、クラスローダーがありますそれらを見つけることができません。

3
Femi