2012-04-06 35 views
5

は私の問題であっても、このことを与えて、「展開アセンブリ」Mavenの依存関係が含まれるように設定されていることを私クラスが見つからない場合、私は何をするべきか分かりません。のMaven +春+動的Webモジュール(エクリプス)=にjava.lang.ClassNotFoundException:org.springframework.web.context.ContextLoaderListener

そして、他のクラスは私のパッケージに含まれているように見えるので、私はちょうど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> 
+0

あなたは自分の質問に英語を使用する必要がありますので、私は/あなたの質問を編集しました答え/コメント。 –

+0

あなたは何を意味するのか分かりません! –

+1

2番目のパラグラフはポルトガル語で書かれていて、私は英語に翻訳しました。皆さんが理解できるように、ここで英語のみを使用する必要があります。 –

答えて

10

この問題が原因にどちらかのようだ:

  1. いくつかのライブラリのバージョンの不一致(すなわち。コンパイルするためのJavaバージョン!= Webアプリケーションサーバー上のJava バージョン)。
  2. 必要なスプリングライブラリは、配布時には含まれていません。プロジェクト

は、この問題を解決しようとするこれらのステップを実行してセットアップするために使用さ

  • Mavenの原型:のpom.xmlで

    • >あなたはのmaven-コンパイラ・プラグイン、ダブルチェックを使用した場合、これはあります使用されているライブラリのバージョンと一致するかどうかを確認します(1.7 NOT 1.6)。

      <plugin> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <configuration> 
          <source>1.7</source> 
          <target>1.7</target> 
      </configuration> 
      </plugin> 
      
    • 上記の手順でライブラリのバージョンを変更した場合は、その後の作業を行う必要があります右プロジェクト> Mavenの>の更新プロジェクトをクリックしてエラーがこのステップの間にスローされた場合...、あなた自身が立ち往生見つけること良いのために。私はこの問題があり、解決できませんでした。私はarchetypesを使ってEclipseで "Mavenを使ったSpring MVC"を作成することをあきらめてしまいました。私は、アーキタイプを使って物事を乱したと思う。私の場合。

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

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

    • プロジェクト]> [プロパティ]> [展開アセンブリ上で右をクリック> [追加]> [Javaのビルド・パスエントリ>春の依存関係を選択します。これは、ClassNotFoundException while loading ContextLoaderListenerノートからです:プロジェクト>クリーン ...>を選択し、プロジェクトを>:あなたはそれを展開する前に、日食

    • に「Mavenの>の更新プロジェクト」を行った後、すべての時間があなたのプロジェクトをきれいにすることを忘れないでください、この手順を実行する必要がありますクリーン

    • プロジェクトを展開し、私の場合はうまくいけば...それは壊れませ

    を参照してください、私が軌道に乗るためにMavenのアーキタイプを使用してせずに新しいプロジェクトを再起動する必要がありました。私はこれらのガイドラインを使用しましたhttp://gkokkinos.wordpress.com/2012/01/02/setting-up-a-spring-mvc-project-with-maven-in-eclipse/。私はまだエラーがスローされましたが、Springの依存関係をデプロイメントアセンブリを介して(上記のように)追加することで問題は解決しました。

  • 2

    私はこの同じ問題を抱えていました。単純なソリューションは、トップレベルのプロジェクト - >プロパティ - >デプロイメントアセンブリを右クリックし、 'Maven Dependencies'を含めることです。私の場合、これは私の問題があった場所です。 DispatcherServletクラスはwarファイルには含まれていなかったので、Tomcatがそのサーバーに展開したときにTomcatが見つかりませんでした。

    0

    私は同様の問題があり、それを修正するためにこれらの手順に従った。

    1. eclipseのOpen Serverタブ。あなたのサーバーを右クリックしてください。
    2. クリーン(Tomcatの)作業ディレクトリ
    3. クリーン(これは作業ディレクトリとは異なっているあなたは、右クリックのコンテキストで見ることができましたクリーンアップ)
    関連する問題