2012-04-06 31 views
5

Vấn đề của tôi là thậm chí đặt "Deployment Assembly" để bao gồm các phụ thuộc maven, điều này cho rằng lớp học không được tìm thấy, tôi không biết phải làm gì khác.Maven + Spring + Mô-đun Web động (Eclipse) = java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener

Và tôi chỉ nhận thấy rằng với lớp ContextLoaderListener vì các lớp khác dường như được bao gồm trong gói của tôi.

tập tin pom.xml My

<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> 

tập tin của tôi 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

tôi thay đổi nội dung câu hỏi của bạn vì bạn chỉ nên sử dụng tiếng Anh trong câu hỏi của bạn/câu trả lời/nhận xét. –

+0

Tôi không hiểu ý bạn là gì! –

+1

Đoạn thứ hai được viết bằng tiếng Bồ Đào Nha, tôi đã dịch sang tiếng Anh, chúng tôi chỉ sử dụng tiếng Anh ở đây để mọi người có thể hiểu được –

Trả lời

10

Vấn đề này có vẻ là một trong hai do:

  1. Một số phiên bản thư viện không phù hợp (ví dụ. phiên bản java để biên dịch! = java phiên bản trên máy chủ ứng dụng web).
  2. Thư viện Spring bắt buộc không được bao gồm trong quá trình triển khai.
  3. nguyên mẫu Maven sử dụng để thiết lập các dự án

Thực hiện các bước sau để cố gắng khắc phục vấn đề này:

  • Trong pom.xml> nếu bạn sử dụng maven-biên dịch-plugin, hãy kiểm tra này là phù hợp với phiên bản của thư viện được sử dụng, nếu không thay đổi nó (ví dụ: 1.7 NOT 1.6).

    <plugin> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <configuration> 
        <source>1.7</source> 
        <target>1.7</target> 
    </configuration> 
    </plugin> 
    
  • Nếu bạn đã thay đổi phiên bản thư viện ở bước trên, sau đó bạn phải làm: Nhấp chuột phải vào Project> Maven> Cập nhật dự án ... Nếu một lỗi được ném trong bước này, bạn có thể thấy mình bị mắc kẹt cho tốt. Tôi gặp vấn đề này và không thể giải quyết nó. Tôi đã từ bỏ việc tạo ra "Spring MVC with Maven" trong Eclipse bằng cách sử dụng các kiểu mẫu. Tôi tin rằng bằng cách sử dụng nguyên mẫu những điều lộn xộn lên .. trong trường hợp của tôi.

  • Kích chuột phải vào Project> Properties> Java Build Path> JRE Hệ thống Thư viện> Edit> chọn phiên bản thư viện đúng

  • Kích chuột phải vào Project> Properties> Project khía cạnh> mô-đun Web động (nên được kiểm tra)> Tab Runtimes ở bên phải của bảng điều khiển> chọn máy chủ được tạo (trước đó bạn phải thêm một máy chủ).

  • Nhấp chuột phải vào Project> Properties> Deployment Assembly> Add> Java Build Path Entries> chọn phụ thuộc Spring. Đây là từ ClassNotFoundException while loading ContextLoaderListener Lưu ý: Bạn phải thực hiện bước này mỗi lần sau khi thực hiện "Maven> Cập nhật dự án" trong eclipse

  • Hãy nhớ dọn dẹp dự án của bạn trước khi triển khai dự án: Project> Clean ...> select project> sạch

  • Triển khai dự án của bạn và xem nó không phá vỡ ... hy vọng

Trong trường hợp của tôi, tôi phải khởi động lại một dự án mới mà không sử dụng nguyên mẫu maven để có được đi. Tôi đã sử dụng các nguyên tắc này http://gkokkinos.wordpress.com/2012/01/02/setting-up-a-spring-mvc-project-with-maven-in-eclipse/.Tôi vẫn gặp lỗi, nhưng thêm các phụ thuộc Spring thông qua Deployment Assembly (như mô tả ở trên) đã sửa những thứ này.

2

Tôi cũng gặp vấn đề tương tự. Giải pháp đơn giản là nhấp chuột phải vào dự án cấp cao nhất -> Properties -> Deployment Assembly và bao gồm 'Maven Dependencies'. Trong trường hợp của tôi, đây là vấn đề của tôi. Lớp DispatcherServlet không được bao gồm trong tệp war, do đó nó không được Tomcat tìm thấy khi tôi triển khai nó cho máy chủ đó.

0

Tôi gặp sự cố tương tự và làm theo các bước sau để khắc phục sự cố.

  1. Tab Máy chủ đang mở trong nhật thực. Nhấp chuột phải vào máy chủ của bạn.
  2. sạch (Tomcat) làm việc thư mục
  3. sạch (điều này khác với thư mục làm việc dọn dẹp mà bạn có thể thấy trong bối cảnh kích chuột phải)
Các vấn đề liên quan