25

私はこの問題に何度か遭遇しましたが、(半)信頼できる解決策に出くわしただけなので、他の人に役立つ場合や忘れた場合に備えて、ここに投稿し、誰かがいるかどうかを尋ねると思いました根本的な原因が何であるか、そしてなぜ私の修正が機能するのかについての考えがあります。

問題-Eclipseの[サーバーで実行]オプションを使用してTomcat7サーバーで実行したいSpring3Webアプリケーションがあります。一部のプロジェクトではこれは正常に機能しますが、一部のプロジェクトは壊れた状態になり、サーバーが起動するたびに、org.springframework.web.servlet.DispatcherServletというクラスが見つかりません。

WEB-INF/lib調査の結果、プロジェクトのMaven依存関係がにコピーされていないことがわかりました。${PROJECT_LOCATION}/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/

プロジェクトに問題パネルに警告があることに最終的に気付く前に、私は多くのことを試しました。

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

おそらく私はこれにもっと早く気づいたはずです。

とにかく、これを選択して「クイックフィックス」を実行すると問題が修正され、プロジェクトを問題なく実行できます。簡単な修正方法は、「関連付けられた生のクラスパスエントリを公開/エクスポートの依存関係としてマークする」ことです。

問題は、これは機能しますが、それが何を意味するのかわかりません。完了した後、プロジェクト構成に明らかな変更が見られません。私は実際の問題が何であるか、そして私がそれが再び起こるのを避けることができるかどうかを知りたいです。また、他のほとんどすべてを試したような気がするので、自分で(クイック修正を実行する以外に)修正できることがあるかどうかも知りたいです。

ご協力いただきありがとうございます。

4

4 に答える 4

34

プロジェクトのプロパティの下にある「展開アセンブリ」セクションを見てください。このページのコンテンツは、プロジェクトを実行中のアプリケーションにアセンブルする方法を指定します。特に、これは、プロジェクトが参照するどのライブラリをパッケージ化する必要があるかを制御できる場所です。[追加] -> [Java ビルド パス エントリ] を選択します。既存のビルド パス エントリから選択して、アセンブリに含めることができます。

あなたが見つけたクイックフィックスは、あなたのために同じことをしました. 内部で何が起こっているのか知りたい場合は、クイック フィックスの前後の .classpath ファイルを確認してください。クイック フィックスは、クラスパス エントリにいくつかのアセンブリ情報をタグ付けします。

于 2011-01-24T00:16:02.857 に答える
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>

それは私のために働いた。

于 2011-09-26T10:45:53.140 に答える
1

WTPプラグイン用の Maven Integrationを追加でインストールする必要があるようです。その説明はissues.sonatype.orgにあります。

于 2011-08-31T08:35:52.000 に答える