5

私の問題は、「展開アセンブリ」を設定してmavenの依存関係を含めることです。これにより、クラスが見つからないため、他に何をすべきかわかりません。

ContextLoaderListenerそして、他のクラスが私のパッケージに含まれているように見えるので、クラスでそれに気づいています。

私のファイル pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.mkyong.common</groupId>
    <artifactId>SpringMVC</artifactId>
    <packaging>war</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>SpringMVC Maven Webapp</name>
    <url>http://maven.apache.org</url>
    <dependencies>
        <!-- <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> 
            <version>3.8.1</version> <scope>test</scope> </dependency> -->

        <!-- Spring framework -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring</artifactId>
            <version>2.5.6</version>
        </dependency>

        <!-- Spring MVC framework -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>2.5.6</version>
        </dependency>

        <!-- JSTL -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.1.2</version>
        </dependency>

        <dependency>
            <groupId>taglibs</groupId>
            <artifactId>standard</artifactId>
            <version>1.1.2</version>
        </dependency>

        <!-- for compile only, your container should have this -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
            <scope>provided</scope>
        </dependency>

    </dependencies>

    <build>
        <finalName>SpringMVC</finalName>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>tomcat-maven-plugin</artifactId>
                <version>1.0-beta-1</version>
                <configuration></configuration>
            </plugin>
        </plugins>
    </build>

</project>

私のファイル web.xml

<web-app id="WebApp_ID" version="2.4"
    xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

    <display-name>Spring Web MVC Application</display-name>

    <servlet>
        <servlet-name>mvc-dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>mvc-dispatcher</servlet-name>
        <url-pattern>*.htm</url-pattern>
    </servlet-mapping>

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/mvc-dispatcher-servlet.xml</param-value>
    </context-param>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

</web-app>
4

3 に答える 3

10

この問題は、次のいずれかが原因のようです。

  1. 一部のライブラリ バージョンの不一致 (つまり、コンパイルする Java バージョン != Web アプリケーション サーバー上の Java バージョン)。
  2. デプロイ時に必要な Spring ライブラリが含まれていません。
  3. プロジェクトのセットアップに使用される Maven アーキタイプ

この問題を解決するには、次の手順を実行します。

  • pom.xml で > maven-compiler-plugin を使用する場合は、これが使用されているライブラリのバージョンと一致していることを再確認し、変更しない場合 (つまり、1.7 ではなく 1.6) を確認します。

    <plugin>
     <artifactId>maven-compiler-plugin</artifactId>
     <configuration>
      <source>1.7</source>
      <target>1.7</target>
     </configuration>
    </plugin>
    
  • 上記の手順でライブラリのバージョンを変更した場合は、次の手順を実行する必要があります。 [プロジェクト] を右クリック > [Maven] > [プロジェクトを更新]... この手順でエラーがスローされた場合、完全に行き詰まる可能性があります。この問題があり、解決できませんでした。結局、原型を使用してEclipseで「Mavenを使用したSpring MVC」を作成することをあきらめました。私の場合、原型を使用することで物事が台無しになったと思います。

  • プロジェクトを右クリック > プロパティ > Java ビルド パス > JRE システム ライブラリ > 編集 > 正しいライブラリ バージョンを選択

  • プロジェクトを右クリック > プロパティ > プロジェクト ファセット > 動的 Web モジュール (チェックする必要があります) > パネルの右側にある [ランタイム] タブ > 作成したサーバーを選択します (以前にサーバーを追加しておく必要があります)。

  • [プロジェクト] > [プロパティ] > [展開アセンブリ] > [追加] > [Java ビルド パス エントリ] を右クリックし、Spring の依存関係を選択します。これは、ContextLoaderListener の読み込み中の ClassNotFoundException によるものです。注: Eclipse で「Maven > Update Project」を実行した後は、毎回この手順を実行する必要があります。

  • プロジェクトを展開する前に、プロジェクトをクリーンアップすることを忘れないでください: [プロジェクト] > [クリーン...] > [プロジェクトを選択] > [クリーン]

  • プロジェクトをデプロイして、壊れないことを確認してください...うまくいけば

私の場合、Maven アーキタイプを使用せずに新しいプロジェクトを再開する必要がありました。これらのガイドラインhttp://gkokkinos.wordpress.com/2012/01/02/setting-up-a-spring-mvc-project-with-maven-in-eclipse/を使用しました。それでもエラーがスローされましたが、(上記のように) Deployment Assembly を介して Spring の依存関係を追加すると問題が解決しました。

于 2012-09-26T11:27:51.343 に答える
0

同様の問題があり、これらの手順に従って修正しました。

  1. Eclipse で [サーバー] タブを開きます。サーバーを右クリックします。
  2. クリーン (Tomcat) 作業ディレクトリ
  3. クリーンアップ (これは、右クリックのコンテキストで表示される作業ディレクトリのクリーンアップとは異なります)
于 2013-12-31T12:22:29.693 に答える