java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener


290

Tôi đã bao gồm những thứ này trong Build Path :

  • tất cả các libs mùa xuân
  • Thư viện Apache Tomcat 7.0

Dự án vẫn thất bại trong quá trình khởi động:

SEVERE: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
    at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:415)
    at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:397)
    at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:118)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4660)
    at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5226)
    at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5221)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)
Jun 2, 2011 11:07:38 AM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Error configuring application listener of class org.springframework.web.context.request.RequestContextListener
java.lang.ClassNotFoundException: org.springframework.web.context.request.RequestContextListener
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
    at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:415)
    at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:397)
    at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:118)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4660)
    at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5226)
    at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5221)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)
Jun 2, 2011 11:07:38 AM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Error configuring application listener of class com.sun.faces.config.ConfigureListener
java.lang.ClassNotFoundException: com.sun.faces.config.ConfigureListener
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
    at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:415)
    at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:397)
    at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:118)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4660)
    at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5226)
    at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5221)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)

Trong org.sprintframework.web-3.1.0.M1.jar, tôi có thể thấy org.springframework.web.context.ContextLoaderListener.

Ai đó trên Google nói rằng spring.jarnên được đưa vào nhưng tôi không thấy bất kỳ spring.jarphân phối nào trong 3.x.

Nhật thực 3.6.2
Tomcat 7

Chỉnh sửa: Ai đó trên Diễn đàn mùa xuân (ngoại tuyến) cho biết "Tự động cập nhật phụ thuộc" nên được kiểm tra trong Thuộc tính dự án nhưng tôi không thấy bất cứ điều gì giống như vậy trong thuộc tính dự án.


1
đóng dự án, tạo nơi làm việc mới, đảm bảo về sự phụ thuộc trong POM. tôi đã phải đối mặt với vấn đề này nhưng đã được khắc phục sau khi điều chỉnh phụ thuộc
MLS

Bạn có thể gửi nội dung của thư mục .war / lib của bạn không? Hoặc ít nhất là tất cả mọi thứ. * Mùa xuân. * \. Jar.
Simeon

Ngay cả khi tôi thêm phụ thuộc sau vào pom, tôi vẫn gặp lỗi tương tự. <lệ thuộc> <groupId> org.springframework </ groupId> <artifactId> spring-web </ artifactId> <version> {Spring-Version} </ version> </ Depencies> Những gì tôi đã làm như những người khác đề xuất phụ thuộc vào lắp ráp triển khai. Và khi tôi cập nhật pom với các phụ thuộc khác và thực hiện dự án cập nhật maven>, lỗi sẽ tiếp tục xảy ra. Kiểm tra lắp ráp triển khai cho thấy tôi phụ thuộc maven đang bị đuổi ra. Tôi đã phải làm lại quá trình trên một lần nữa.
Tadele Ayelegn

1
Giải pháp này đã làm việc cho hầu hết. Thêm phụ thuộc vào lắp ráp triển khai.
lokesh

Câu trả lời:


777

Tôi đã gặp một vấn đề tương tự khi chạy một ứng dụng web mùa xuân trong một tomcat được quản lý Eclipse. Tôi đã giải quyết vấn đề này bằng cách thêm các phụ thuộc maven vào cụm triển khai web của dự án.

  1. Mở thuộc tính của dự án (ví dụ, nhấp chuột phải vào tên dự án trong trình khám phá dự án và chọn "Thuộc tính").
  2. Chọn "Triển khai hội".
  3. Nhấp vào nút "Thêm ..." ở lề phải.
  4. Chọn "Mục nhập đường dẫn xây dựng Java" từ menu Loại chỉ thị và nhấp vào "Tiếp theo".
  5. Chọn "Maven Dependencies" từ trình đơn Java Build Path Entries và bấm "Hoàn tất".

Bạn sẽ thấy "Maven Dependencies" được thêm vào định nghĩa của Hội triển khai Web.


6
Đó là cách bạn nên làm, cách chính xác trong nhật thực.
pap

18
Tôi đã có cùng một vấn đề. Nhưng tôi không thể thấy 'Hội triển khai' tại 'Thuộc tính' (trong một mô-đun của dự án maven đa mô hình của tôi).
gtiwari333

9
Điều này là chính xác, mặc dù rất khó chịu. Có lẽ một cái gì đó m2e plugin nên quan tâm, theo ý kiến ​​của tôi.
RickB

10
Tôi thấy Maven Dependencies được thêm vào định nghĩa của Hội triển khai Web nhưng tôi vẫn nhận được lỗi.
dabadaba

10
Điều gì xảy ra nếu Java Build Path Entries không chứa gì? Tôi đang ở trong trường hợp đó.
vdolez

117

Thỉnh thoảng điều tương tự cũng xảy ra với tôi khi sử dụng WDT của Eclipse. Đặc biệt của nó bực bội khi điều này xảy ra với một dự án chưa được sửa đổi và làm việc trước đây. Đây là những gì tôi làm để khắc phục nó trong kịch bản cuối cùng này:

  1. Dừng Tomcat (nếu nó đang chạy)
  2. Mở chế độ xem "Máy chủ": Cửa sổ> Hiển thị chế độ xem> Khác> Máy chủ> Máy chủ
  3. Nhấp chuột phải vào Máy chủ Tomcat> Thư mục làm việc Tomcat sạch.
  4. Nhấp chuột phải vào Tomcat Server> Clean
  5. Khởi động lại máy chủ

Điều này thường khắc phục vấn đề bạn đề cập.


3
Có một báo cáo lỗi cho tình huống cụ thể đó ( bug.eclipse.org/bugs/show_orms.cgi?id=365748 ). Các nhà phát triển Eclipse đang cần thêm thông tin về nó và các cách để tái tạo vấn đề.
Chucky

1
tốt đây là giải pháp linh hoạt cho tất cả, câu trả lời này phải được đánh dấu là câu trả lời. Làm tốt Chepech
Câu hỏi Java

3
Đây thực sự là một giải pháp đơn giản nhất cho vấn đề này. Cảm ơn Chepech!
Badal

2
Điều này không giúp tôi sử dụng nhật thực 4.4. Tôi đã phải sử dụng phương pháp của Susie loại bỏ / thêm triển khai vào tomcat. Tôi đã theo dõi thư mục triển khai tomcat khi thực hiện việc dọn dẹp. Không biết tại sao việc dọn dẹp không làm sạch thư mục triển khai.
Bleek Geek

1
Lắp ráp triển khai là cách đúng đắn để làm điều đó, nhưng nếu nó không hoạt động do một số tham nhũng hoặc không có gì, thì việc dọn dẹp này thực sự khắc phục nó.
Calabacin

26

Bạn có thể thử "Clean Tomcat Work Directory" hoặc đơn giản là "Clean ..". Điều này được cho là loại bỏ tất cả các trạng thái được công bố và xuất bản lại từ đầu.


Thx cho giải pháp này! Câu trả lời được chấp nhận ở trên không giải quyết được vấn đề này cho tôi, nhưng bạn thì có.
GreenTurtle

25

Tôi đã sử dụng IntelliJ IDEA, quá trình biên dịch thành công, nhưng khi bắt đầu Tomcat, nó nói:

Error configuring application listener of class org.springframework.web.context.ContextLoaderListener
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener

Ban đầu, tôi nghĩ rằng JAR bị mất, nhưng nó đã được đặt đúng chỗ.

Giải pháp : File > Project Structure > Artifacts, trong khi Output Layoutnhấp đúp vào bảng bên phải Available Elements, thư viện có tên như thế Maven:..., nó sẽ được chuyển đến WEB-INF/libtrong khung bên trái.

Chấp nhận và khởi động lại Tomcat.


Câu trả lời này không chính xác liên quan đến câu hỏi được hỏi vì OP đang sử dụng Eclipse
Adam Michalik

10
Nhưng nó đã giúp tôi.
udaybhaskar

8

Đây chắc chắn là vấn đề liên quan đến Eclipse. Điều làm việc cho tôi là tạo một máy chủ mới trong tab máy chủ nhật thực. Sau đó chạy ứng dụng của bạn trong máy chủ mới này, nó sẽ hoạt động.



7

Nếu mọi thứ được đề cập ở trên không hoạt động, hãy thử những điều sau đây. Nó làm việc cho tôi.

Xóa dự án của bạn khỏi máy chủ> Khởi động lại máy chủ> Thêm dự án của bạn vào máy chủ> Khởi động lại máy chủ.

Hướng dẫn chi tiết:

1. Right click on server > Add and Remove
2. Select your project > Remove > Finish
3. Restart your server
4. Right click on server > Add and Remove
5. Select your project > Add > Finish
6. Restart your server again.

5

Tôi đã phải đối mặt với cùng một vấn đề cho một dự án nhật thực được cấu hình cho thời gian chạy Tomcat 7

Nhấp chuột phải vào dự án và đi đến thuộc tính dự án. Bấm vào Triển khai hội. Tôi có thể nhận thấy rằng các thư viện thư viện mùa xuân mà tôi đã tạo trong thời gian biên dịch với thư viện người dùng bị thiếu. Chỉ cần thêm các lọ và bạn sẽ thấy không có lỗi trong bảng điều khiển trong quá trình khởi động tomcat


5

Nếu bạn đang sử dụng maven, có lẽ dự án chưa được xây dựng. Đầu tiên làm một mvn clean packagesau đó thử triển khai lại.


Nhật thực 3.6.2 + Tomcat 7
emeraldhieu

4

Giải pháp cho Eclipse Luna:

  1. Nhấp chuột phải vào dự án web maven
  2. Nhấp vào 'Thuộc tính'menu
  3. Chọn 'Triển khai hội' ở bên trái của cửa sổ bật lên
  4. Nhấp vào nút 'Thêm ...' ở bên phải cửa sổ bật lên
  5. Bây giờ xuất hiện thêm một cửa sổ bật lên (Chỉ thị hội mới)
  6. Nhấp vào 'Mục nhập đường dẫn Java Build'
  7. Nhấp vào nút 'Tiếp theo'
  8. Nhấp vào nút 'Hoàn tất', bây giờ đóng cửa sổ bật lên New Directby Directivies
  9. Bây giờ bấm vào nút 'Áp dụng' và Nút Ok
  10. Chạy ứng dụng web của bạn

4

Nếu bạn đang sử dụng IntelliJ IDEA và triển khai ứng dụng trên Máy chủ Tomcat, nó nói: Trong menu Tệp -> chọn Cấu trúc dự án -> nhấp vào tạo tác -> chọn lọ của bạn và nhấp chuột phải -> đặt vào WEB \ lib -> khởi động lại máy chủnhập mô tả hình ảnh ở đây


3

Thật ra đây là một vấn đề của Tomcat. Chỉ cần truy cập thư mục 'lib' của dự án của bạn và sao chép tất cả các lọ liên quan đến 'Mùa xuân' của bạn vào đây. Làm mới dự án của bạn và tất cả các bạn là tốt để đi. Vấn đề này đôi khi vẫn tồn tại bởi vì tomcat không thể xác định vị trí các lớp lõi của Spring.


2

Tôi cũng có lỗi tương tự. Tôi đã không thêm phụ thuộc dưới đây vào tệp POM của mình.

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>4.1.7.RELEASE</version>
  </dependency>

Nhưng porject của tôi đã từng chạy ngay cả trước khi tôi thêm phần phụ thuộc này. Nhưng tại một thời điểm, nó dừng lại và bắt đầu đưa ra lỗi tương tự ở trên.

Nếu bất kỳ ai không thể giải quyết lỗi này, họ cũng có thể giải quyết bằng liên kết này


1
<lệ thuộc> <groupId> org.springframework </ groupId> <artifactId> spring-web </ artifactId> <version> 4.1.6.RELEASE </ version> </ Depencies> Thêm điều này đã giúp tôi khắc phục lỗi này.
Ashutosh S

2

Tôi gặp vấn đề tương tự. Tôi đã giải quyết nó bằng cách thêm phụ thuộc vào web mùa xuân trong pom của tôi. Hãy chắc chắn rằng bạn sử dụng jar mùa xuân-web trong đó có ContextLoaderListener lớp kéo dài ContextLoader cụ ServletContextListener và cư trú trong org.springframework.web.context gói. Tôi đã sử dụng 3.0.4.


1

Tôi đã thử

  • dự án sạch mvn
  • dọn dẹp
  • làm sạch thư mục làm việc tomcat tự động
  • cập nhật phụ thuộc

Điều duy nhất hoạt động ít nhất là tạm thời là thêm Maven Dependencies vào định nghĩa hội triển khai web

Nhưng điều này không hoạt động mãi mãi! Sau một vài ngày nó ngừng hoạt động. Giải pháp của tôi là loại bỏ Maven Dependencies, áp dụng thay đổi và thêm Maven Dependencies một lần nữa.

Tôi đang sử dụng - nhật thực Juno - nhúng maven - tomcat 7


1

Đối với người dùng lớp, Nó hoạt động với các bước sau

1) Dừng và xóa máy chủ tomcat khỏi Tab Máy chủ trong nhật thực

tab tomcat nhật thực

2) dọn dẹp ứng dụng web và thư mục công việc khỏi cài đặt tomcat , (Tham khảo, Cách thực hiện: Xóa bộ nhớ cache của Tomcat và khắc phục các sự cố lỗi thời )

$ rm -r /usr/local/AT7028/work/*
$ rm -r /usr/local/AT7028/webapps/WAR_NAME

3) làm sạch và làm lu mờ dự án bằng công cụ xây dựng

$ ./gradlew clean eclipse// ra lệnh tương ứng cho mvnngười dùng,$ mvn clean package

4) cấu hình máy chủ Tomcat mới trong nhật thực và chạy lại dự án.


1

tôi cũng phải đối mặt với cùng một vấn đề .... và giải quyết bằng cách làm theo các bước dưới đây:

RC (nhấp chuột phải vào dự án web) -> thuộc tính -> Triển khai hội nghị -> Thêm -> Mục nhập đường dẫn xây dựng Java -> Tiếp theo -> chọn các tệp jar bị thiếu -> tiếp theo -> kết thúc

Ứng dụng đang chạy thành công ...


Tôi có lỗi của OP, nhưng không có tệp jar nào bị thiếu trong cụm triển khai của tôi.
Blamkin86

1

Tôi có cùng một vấn đề và tôi đã giải quyết nó bằng các bước được đề cập ở trên. Nhưng không, khi tôi gặp vấn đề này một lần nữa và tôi thử làm như sau,

RC (nhấp chuột phải vào dự án web) -> thuộc tính -> Triển khai hội nghị -> Thêm -> Mục nhập đường dẫn xây dựng Java -> Tiếp theo ->

sau khi nhấp vào tiếp theo, chỉ có một cửa sổ trống với các tùy chọn Tiếp theo và bị vô hiệu hóa. Tôi có thể làm gì bây giờ?


1

Tôi phải đối mặt với cùng một vấn đề.

Chỉ cần xóa máy chủ khỏi cấu hình và thêm lại sau khi khởi động lại nhật thực bằng cách thêm nó vào môi trường thời gian chạy của máy chủ.


1

Đối với tôi, cách khắc phục là nhấp chuột phải vào mô-đun ứng dụng web của tôi> Maven> Cập nhật dự án


1

Một giải pháp nhanh mà tôi thích nhất mà tôi phù hợp nhất cho tình huống này chỉ đơn giản là xóa thư mục .metadata của không gian làm việc của bạn và nhập lại các dự án của bạn. Nếu bạn thử tất cả các tùy chọn khác, nó sẽ không đảm bảo thành công. Đôi khi các giải pháp trên hoạt động đôi khi bạn sẽ dành hàng giờ quý báu của mình để sửa cấu hình này.

Một ngày nọ tôi quyết định dọn dẹp trạm làm việc của mình. Tôi sắp xếp các dự án vào các thư mục phù hợp của họ theo các khách hàng khác nhau. Kết quả là tất cả đã bị rối tung lên. Sau khi dành cả một ngày, nó đã không kết thúc trong một không gian làm việc cố định. Ngày hôm sau tôi chỉ cần xóa thư mục .metadata của không gian làm việc và nhập lại tất cả các dự án. Bingo tất cả các thiết lập.


1

Đặt <packaging>war</packaging>trong tệp pom.xml của bạn nếu bạn đang sử dụng Maven. Trong trường hợp đó, có thể đó là với bao bì jar

Bạn phải có Maven libs trong Triển khai hội


0

Việc sử dụng "Cập nhật cấu hình dự án" đã làm rối loạn đường dẫn xây dựng của dự án.

Khắc phục: Mở menu "configure build path ..." (nhấp chuột phải vào dự án) và sửa các tùy chọn Bao gồm / Loại trừ cho mỗi thư mục nguồn. Điều đó làm việc cho tôi.


0

Trong nhiều trường hợp Đó ​​là vấn đề về khía cạnh java, phiên bản jdk hoặc jre hoặc jsp khác biệt so với mặt dự án maven.


0

Giải pháp thực tế cho tôi là cài đặt "m2e-wtp - Tích hợp Maven cho WTP". Giải pháp của Marcelo không cần thiết trong trường hợp đó.


0

nếu không có gì ở trên hoạt động, loại bỏ lớp. khỏi lớp người nghe tức là

<listener>
<listener-class>

org.springframework.web.context.ContextLoaderListener.class

</listener-class>
</listener>

0

Điều này làm việc cho tôi ..

Nhấp chuột phải vào dự án web maven Nhấp vào 'Thuộc tính'menu Chọn' Hội triển khai 'ở bên trái của cửa sổ bật lên Nhấp vào' Thêm ... 'Nút ở bên phải của cửa sổ bật lên Bây giờ xuất hiện thêm một cửa sổ bật lên (Chỉ thị hội mới) Nhấp vào 'Mục nhập đường dẫn xây dựng Java' Nhấp vào nút 'Tiếp theo' Nhấp vào nút 'Hoàn tất', bây giờ đóng một cách tự động Cửa sổ bật lên Chỉ thị trực tiếp lắp ráp mới Bây giờ bấm vào nút 'Áp dụng' và Nút Ok Chạy ứng dụng web của bạn


0

Điều này đã xảy ra với tôi sau khi tôi thực hiện các thay đổi đối với ánh xạ Hibernate của mình trong một dự án IntelliJ bằng Gradle. Đơn giản chỉ cần xây dựng lại dự án làm việc cho tôi.


0

Tôi chạy vào đây một vài lần một phần tư. Lần này tôi đã có một bản tóm tắt thay đổi tối thiểu trong git diff của mình và theo dõi vấn đề với một đường dẫn lớp thiết lập lại (thiếu phụ thuộc WEB-INF / lib của tôi) trong nhật thực. Điều này dường như xảy ra bất cứ khi nào tôi kéo vào hoặc rút ra các dự án maven cha mẹ / anh chị em.

Có đề cập đến việc thêm bình mùa xuân của bạn vào lib web container tomcat - điều này là ổn và là cách mà hầu hết các máy chủ EE chạy. Tuy nhiên, hãy lưu ý rằng bằng cách đặt lò xo cao hơn trong cây trình nạp lớp trên tomcat, bạn sẽ chạy cao hơn mức trình nạp lớp trong bối cảnh chiến tranh của bạn. Tôi khuyên bạn nên để các lib trong trình nạp lớp cấp thấp hơn cho mỗi cuộc chiến.

Chúng ta thấy sau đây sau một. Classpath bị cắt ngắn sau khi thay đổi dự án cấu trúc trong nhật thực.

Dec 18, 2016 11:13:39 PM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Error configuring application listener of class org.springframework.web.context.request.RequestContextListener
java.lang.ClassNotFoundException: org.springframework.web.context.request.RequestContextListener

Classpath của tôi đã được đặt lại và phần phụ thuộc WEB-INF / lib đã bị xóa.

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

để lại chỗ cũ

<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>

và bạn sẽ ổn thôi.

cảm ơn bạn / michael


0

Tôi đã nhận được điều này khi tôi có lib trong đường dẫn xây dựng của mình, nhưng không phải trong hội đồng triển khai. Ngoài ra khi tôi có một bối cảnh bị thiếu.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.