2010-09-17 26 views
39

Tôi đang cố chạy mẫu lát ví dụ được đưa ra here.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder

Dưới đây là pom.xml của tôi:

<dependencies> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>3.8.1</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.tiles</groupId> 
      <artifactId>tiles-api</artifactId> 
      <version>2.1.2</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.tiles</groupId> 
      <artifactId>tiles-core</artifactId> 
      <version>2.1.2</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.tiles</groupId> 
      <artifactId>tiles-jsp</artifactId> 
      <version>2.1.2</version> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-api</artifactId> 
      <version>1.5.2</version> 
     </dependency> 

Khi tôi đang cố gắng để chạy các ví dụ lỗi dưới đây được ném:

Sep 17, 2010 11:59:43 PM org.apache.catalina.core.StandardContext listenerStart 
SEVERE: Error configuring application listener of class  org.apache.tiles.web.startup.TilesListener 
java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder 
at org.slf4j.LoggerFactory.<clinit>(LoggerFactory.java:60) 
at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) 
at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:131) 
at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:685) 
at org.apache.tiles.web.startup.TilesListener.<init>(TilesListener.java:49) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 
at java.lang.reflect.Constructor.newInstance(Unknown Source) 
at java.lang.Class.newInstance0(Unknown Source) 
at java.lang.Class.newInstance(Unknown Source) 

Bất kỳ ý tưởng?

Tôi đã dành 30 phút googling cho điều này nhưng không thể tìm thấy một sollution có thể.

Xin hãy giúp tôi ...

Trả lời

96

Bạn đã bao gồm một phụ thuộc vào API SLF4J, đó là những gì bạn sử dụng trong ứng dụng của bạn để ghi nhật ký, nhưng bạn cũng phải bao gồm triển khai thực hiện công việc ghi nhật ký thực.

Ví dụ để đăng nhập thông qua Log4J bạn sẽ thêm sự phụ thuộc này:

<dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-log4j12</artifactId> 
     <version>1.5.2</version> 
    </dependency> 

Việc thực hiện khuyến cáo sẽ logback-cổ điển, đó là sự kế thừa của Log4j, thực hiện bởi những kẻ cùng khiến SLF4J và Log4J:

<dependency> 
    <groupId>ch.qos.logback</groupId> 
    <artifactId>logback-classic</artifactId> 
    <version>0.9.24</version> 
</dependency> 

Lưu ý: Các phiên bản có thể không chính xác.

+6

Để được chính xác, logback là một ngã ba của log4j, không phải là một người kế nhiệm. –

+3

org.slf4j slf4j-log4j12 1.5.2 gia tăng sự phụ thuộc trên và nó làm việc ... 'Thanks guys cho tất cả replies' – javanoob

+10

Logback không phải là một ngã ba của log4j, quả thật vậy đó là một người kế nhiệm. Nó không thực sự chia sẻ mã với Log4j và Ceki Gülcü, tác giả của cả hai khung công tác, đã tuyên bố rõ ràng rằng khi tạo nó: http://ceki.blogspot.fr/search?q=logback. – PomCompot

8

Bạn đã bao gồm phụ thuộc cho api sflj, nhưng không phải là phụ thuộc cho việc thực hiện các api, đó là một lọ riêng biệt, bạn có thể thử slf4j-đơn giản-1.6.1 .jar.

+1

Điều đó phù hợp với tôi. Tôi đã sử dụng ứng dụng trên TomCat trong nhiều năm. Đã thử chạy trên JBoss 5.1.1 và nó cần thư viện này. Tôi không biết tại sao nó không cần nó trên TomCat ..... – AgilePro

1

Thêm tất cả các lọ gạch như (tiles-jsp, tiles-servlet, tile-template, tile-extras.tiles-core) vào thư mục lib của máy chủ và đường dẫn xây dựng ứng dụng của bạn sau đó nó hoạt động nếu bạn sử dụng đuôi apache ứng dụng mvc mùa xuân

0

Sao chép tất cả các mục nhập của tệp .iml thư mục chính vào tệp /src/main/main.iml của bạn. Điều này sẽ giải quyết được vấn đề.

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