2011-01-23 6 views
25

を起動するとき、私はこの問題に数回実行したとばかり(半)信頼性の高いソリューションにつまずいたので、私は場合には、ここでそれを投稿だろうと思ったことができます他の誰かが、または私がそれを忘れた場合には、また、誰かが根本的な原因が何であるか、なぜ私の修正が働くのかを知っているかどうか尋ねる。のClassNotFoundExceptionのDispatcherServletのTomcat(Mavenのはwtpwebappsにコピーされない依存関係)

問題 - 私は、Tomcatの7サーバー上で実行するためにEclipseでServerオプションで実行]を使用したい春3 Webアプリケーションを持っています。いくつかのプロジェクトではこれはうまく動作しますが、サーバが起動するたびにorg.springframework.web.servlet.DispatcherServletというクラスが見つかりません。

は、いくつかの調査の後、私は私が最終的にプロジェクトが問題パネル内の警告があったことを気づいて前に多くのことをしようとしたプロジェクトのMavenの依存関係が${PROJECT_LOCATION}/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/

WEB-INF/libにコピーされていなかったことが判明しました

Classpath entry org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER 
will not be exported or published. Runtime ClassNotFoundExceptions may result. 

おそらく私はこれを早く気づいたはずです。

とにかく、これを選択し、「クイック・フィックス」を実行して問題を修正し、私は喜んで私のプロジェクトを実行することができます。クイックフィックスは、 "関連する未加工のクラスパスエントリをパブリッシュ/エクスポートの依存関係としてマークする"ことです。

トラブルは、この作品が、私はそれが何を意味するのか分からない、です。完了後、私のプロジェクト構成に明らかな変更はありません。私は実際の問題が何であるかを知りたいと思っています。私は、それを修正したかもしれない何かがあるかどうかを知りたがっています。

ありがとうございました。

答えて

34

プロジェクトプロパティの[展開アセンブリ]セクションを参照してください。このページの内容は、実行中のアプリケーションにプロジェクトを組み込む方法を指定します。特に、これは、あなたのプロジェクトが参照するライブラリのどれをパッケージ化するかを制御できる場所です。 「Add」 - >「Java Build Path Entries」を選択します。アセンブリに含める既存のビルドパスエントリを選択することができます。

あなたが見つけたクイックフィックスは、あなたのために同じことをしました。カバーの下で何が起きるのか不思議であれば、クイックフィックスの前後に.classpathファイルを見てください。クイックフィックスでは、クラスパスエントリにいくつかのアセンブリ情報がタグ付けされます。

+0

ありがとうございます!私はそれが働いていることを理解できなければ物事を覚えておくことは不可能だと思うので、これは将来私が大した苦痛を救う可能性が最も高いでしょう。 – Russell

+0

私のEclipseが突然昨日何の理由もなく爆発した後、これは本当に助けになりました。 – fforw

2

チェックの.classファイルと以下に次のエントリ

**<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER" />** 

を置き換える: -

**<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"> 
    <attributes> 
    <attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/> 
    </attributes> 
</classpathentry>** 

それは私のために働きました。

+0

Mavenのクラスパス全体をエクスポートしたいとは思わないでしょう。これは、デフォルトでいくつかのjarsを提供するアプリケーションサーバ上で競合する可能性が高いからです(例えば、servlet-api-2.5.jar、jsp-api-2.1.jar、 jstl-1.2.jar)。代わりに、それぞれのjarは、コンスタンティンによって受け入れられた答えに記述されているように、Eclipseのデプロイメントアセンブリのセクションで1つずつ選択する必要があります。 – chrisjleu

+0

私の場合、はすでに存在しますが、まだNoClassDefFoundErrorを取得しています。メタデータ/ .plugins/org.eclipse.wst.server.core/tmp0、私はLibのmaven依存関係を見つけられません。 –

関連する問題