2011-01-24 32 views
12

Tôi đang cố gắng thiết lập một ứng dụng web trên Eclipse. Tôi đang sử dụng Tomcat 6.0 và jdk 1.6.0_23. Đối với một số lý do tôi nhận được lỗi này:Không thể tìm thấy Log4jConfigListener - ngữ cảnh không thể bắt đầu

 
SEVERE: Error configuring application listener of class org.springframework.web.util.Log4jConfigListener 
java.lang.ClassNotFoundException: org.springframework.web.util.Log4jConfigListener 
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645) 
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491) 
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4078) 
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4630) 
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
at org.apache.catalina.core.StandardHost.start(StandardHost.java:785) 
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445) 
at org.apache.catalina.core.StandardService.start(StandardService.java:519) 
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) 
at org.apache.catalina.startup.Catalina.start(Catalina.java:581) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:597) 
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) 
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) 
Jan 24, 2011 11:44:08 AM org.apache.catalina.core.StandardContext listenerStart 
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:1645) 
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491) 
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4078) 
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4630) 
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
at org.apache.catalina.core.StandardHost.start(StandardHost.java:785) 
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445) 
at org.apache.catalina.core.StandardService.start(StandardService.java:519) 
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) 
at org.apache.catalina.startup.Catalina.start(Catalina.java:581) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:597) 
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) 
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) 

Tôi đã kiểm tra nếu tất cả các thư viện đã được thêm vào con đường xây dựng và tất cả mọi thứ dường như đúng. log4j-1.2.15.jar được bao gồm và tất cả các thư viện mùa xuân cần thiết.

Tôi rất bối rối về vấn đề này đặc biệt là vì dự án hoạt động tốt trong một máy tính khác. Bất kỳ trợ giúp nào về vấn đề này sẽ được đánh giá cao.

Naftal

+0

bạn có thể liệt kê ra các thư viện bạn đã bao gồm –

+0

Tôi đang sử dụng Hibernate vì vậy tôi có các thư viện ngủ đông như hibernate-annotations.jar, hibernate3.jar vv Nhưng theo stacktrace, có vẻ như tôi đang thiếu một trong những librabries springframework. Tôi có các thư viện mùa xuân này: - spring.jar, spring-aop.jar, spring-aspect.jar, spring-beans.jar, spring-context.jar, spring-context-support.jar, spring-core.jar, spring -jdbc.jar, spring-test.jar, spring-web.jar, spring-webmvc.jar – 1000Suns

+0

ok thì không có bình xuân, phải không? –

Trả lời

4

lớp Các org.springframework.web.util.Log4jConfigListener chắc chắn không phải là trong classpath của bạn. Điều đầu tiên tôi đề nghị là bạn bật cấp độ ghi trong Tomcat - trong thư mục conf - thành "ALL" hoặc "DEBUG" để bạn có thể thấy chính xác những gì đang diễn ra trong vùng chứa đang ngăn không cho lớp này được tìm thấy.

Thứ hai, tôi muốn khuyên bạn nên kiểm tra các tập tin JAR của bạn cho các tập tin lớp mất tích bằng cách chạy grep, nếu trên linux/mac:

# run at the root of your lib folders: 
    grep -ri "org.springframework.web.util.Log4jConfigListener" * 

Lệnh trên sẽ trả lại tất cả các tập tin JAR chứa gói phần mềm đó. Khi tệp JAR bị cô lập, bạn có thể khắc phục sự cố.

Thứ ba, đảm bảo bạn không có bất kỳ xung đột nào. Nhiều phiên bản của Log4j nằm trong classpath của bạn sẽ tàn phá. Làm thế nào để hệ thống được biết là gói nào org.springframework.web.util.Log4jConfigListener để tải nếu có 2 trong số chúng? Tomcat có 3 thư mục classpath khác nhau:

shared/lib 
lib 
webapps/yourapp/WEB-INF/lib 

Đảm bảo bạn chỉ có một tệp log4j JAR trong một trong các thư mục này.

+0

Tôi sẽ chỉ xóa tất cả các thư viện và bắt đầu từ đầu. Cảm ơn bạn vì tất cả sự giúp đỡ. – 1000Suns

3

Nếu bạn đang sử dụng maven và eclipse

1) Tìm trong dự án web của bạn .classpath file. Nếu bạn có mục nhập classpath "org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER", thì hãy đảm bảo rằng thuộc tính cũng có.

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

2) Nếu điều đó không hoạt động, sau đó nhấp chuột phải vào dự án web của bạn trong nhật thực và chuyển đến Thuộc tính -> Phụ thuộc mô-đun JavaEE. Đảm bảo chọn hộp Maven Dependencies.

Sau đó lưu, xây dựng triển khai yada yada

+0

Xin cảm ơn, điều đó có hiệu quả đối với tôi đối với các helios eclipse! – Badal

36

Đề xuất thứ hai của Reticulogic là chính xác. Tuy nhiên, trong Eclipse Helios, tùy chọn "Phụ thuộc Mô-đun Java EE" đã bị xóa. Việc sửa chữa cho Helios là như sau:

  1. Nhấp chuột phải vào dự án của bạn trong Eclipse và vào Properties -> Triển khai hội
  2. Bấm "Add ..."
  3. Chọn "Java Build Path Entries" và nhấn "Next"
  4. chọn "Maven Dependencies" và bấm vào nút "Finish"
+3

Cảm ơn rất nhiều! Đã bị mắc kẹt về điều này cho các lứa tuổi - Bounty đến theo cách của bạn. –

+1

Giải pháp này cũng hoạt động đối với tôi trên helios eclipse. – Badal

+1

Giải pháp tuyệt vời! – Eyal

1

Một giải pháp đơn giản là để làm sạch các thư mục Tomcat trong Eclipse. Nó làm việc cho tôi.

+1

Bạn sẽ làm như thế nào? – likeitlikeit

+0

Trong Eclipse Mars, trong khung nhìn máy chủ, nhấp chuột phải vào cá thể máy chủ, sau đó chọn "Clean ..." hoặc "Clean Tomcat Work Directory ..." – chrisinmtown

0

Nếu bạn sử dụng, log4j2, bạn có thể tìm thấy những lớp học trong

org.apache.logging.log4j.web.* 

gói.

Các vấn đề liên quan