2014-10-20 21 views
7

Tôi đã thêm Log4J2 vào ứng dụng của mình. Tôi đã sao chép tất cả các tệp .jar của Log4J2 vào thư mục LIB và tạo tệp Log4J2.xml để hỗ trợ nó. Mã của tôi đã được cập nhật để nhập các API nhật ký và trình quản lý nhật ký cần thiết. Sau đó tôi thêm phương thức logger cuối cùng tĩnh và được gọi là logger apis trong mã của tôi. Mọi tệp được biên dịch trong Eclipse. Tôi tiến hành khởi động máy chủ trên máy tính DEV của mình để xác thực nó. Khi khởi động máy chủ của tôi, tôi nhận được lỗi sau: `NoClassDefFoundError: org/slf4j/Logger

2014-10-19 21:39:31.753:INFO:oejs.Server:jetty-8.1.14.v20131031 
2014-10-19 21:39:32.680:WARN:oejuc.AbstractLifeCycle:FAILED FoundationStartup: java.lang.NoClassDefFoundError: org/slf4j/Logger 
java.lang.NoClassDefFoundError: org/slf4j/Logger 
    at org.apache.logging.slf4j.SLF4JLoggerContext.getLogger(SLF4JLoggerContext.java:41) 
    at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:474) 
    at com.global.service.FoundationStartup.<clinit>(FoundationStartup.java:19) 
    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) 
    at org.eclipse.jetty.servlet.ServletContextHandler$Context.createServlet(ServletContextHandler.java:1075) 
    at org.eclipse.jetty.servlet.ServletHolder.newInstance(ServletHolder.java:957) 
    at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:514) 
    at org.eclipse.jetty.servlet.ServletHolder.doStart(ServletHolder.java:344) 
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 
    at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:791) 
    at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:265) 
    at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1221) 
    at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:717) 
    at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:454) 
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 
    at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:229) 
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 
    at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95) 
    at org.eclipse.jetty.server.Server.doStart(Server.java:282) 
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 
    at org.eclipse.wst.server.preview.internal.PreviewStarter.run(PreviewStarter.java:72) 
    at org.eclipse.wst.server.preview.internal.PreviewStarter.main(PreviewStarter.java:29) 
Caused by: 
java.lang.ClassNotFoundException: org.slf4j.Logger 
    at java.net.URLClassLoader$1.run(Unknown Source) 
    at java.net.URLClassLoader$1.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:424) 
    at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:377) 
    at org.apache.logging.slf4j.SLF4JLoggerContext.getLogger(SLF4JLoggerContext.java:41) 
    at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:474) 
    at com.global.service.FoundationStartup.<clinit>(FoundationStartup.java:19) 
    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) 
    at org.eclipse.jetty.servlet.ServletContextHandler$Context.createServlet(ServletContextHandler.java:1075) 
    at org.eclipse.jetty.servlet.ServletHolder.newInstance(ServletHolder.java:957) 
    at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:514) 
    at org.eclipse.jetty.servlet.ServletHolder.doStart(ServletHolder.java:344) 
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 
    at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:791) 
    at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:265) 
    at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1221) 
    at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:717) 
    at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:454) 
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 
    at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:229) 
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 
    at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95) 
    at org.eclipse.jetty.server.Server.doStart(Server.java:282) 
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 
    at org.eclipse.wst.server.preview.internal.PreviewStarter.run(PreviewStarter.java:72) 
    at org.eclipse.wst.server.preview.internal.PreviewStarter.main(PreviewStarter.java:29)` 

Điều gì sai với cấu hình của tôi? Tôi có cần tải xuống tệp .JAR khác hoặc đây có phải là sự cố cấu hình không?

Xin cảm ơn, Stephen.

Tôi đã sao chép slf4j .jars vào lib và chạy lại máy chủ. Các lỗi sau xuất hiện. Bất kỳ ý tưởng nào tại sao các lỗi này hiện đang bị ném?

.apache.logging.slf4j.SLF4JLoggerContext.getLogger(SLF4JLoggerContext.java:41) 
    at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:51) 
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:277) 
    at org.apache.logging.slf4j.SLF4JLoggerContext.getLogger(SLF4JLoggerContext.java:41) 
    at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:51) 
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:277) 
    at org.apache.logging.slf4j.SLF4JLoggerContext.getLogger(SLF4JLoggerContext.java:41) 
    at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:51) 
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:277) 
    at org.apache.logging.slf4j.SLF4JLoggerContext.getLogger(SLF4JLoggerContext.java:41) 
    at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:51) 
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:277) 
    at org.apache.logging.slf4j.SLF4JLoggerContext.getLogger(SLF4JLoggerContext.java:41) 
    at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:51) 
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:277) 
    at org.apache.logging.slf4j.SLF4JLoggerContext.getLogger(SLF4JLoggerContext.java:41) 
    at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:51) 
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:277) 
    at org.apache.logging.slf4j.SLF4JLoggerContext.getLogger(SLF4JLoggerContext.java:41) 
    at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:51) 
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:277) 
    at org.apache.logging.slf4j.SLF4JLoggerContext.getLogger(SLF4JLoggerContext.java:41) 
    at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:51) 
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:277) 
    at org.apache.logging.slf4j.SLF4JLoggerContext.getLogger(SLF4JLoggerContext.java:41) 
    at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:51) 
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:277) 
    at org.apache.logging.slf4j.SLF4JLoggerContext.getLogger(SLF4JLoggerContext.java:41) 
    at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:51) 
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:277) 
    at org.apache.logging.slf4j.SLF4JLoggerContext.getLogger(SLF4JLoggerContext.java:41) 
    at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:51) 
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:277) 
    at org.apache.logging.slf4j.SLF4JLoggerContext.getLogger(SLF4JLoggerContext.java:41) 
    at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:51) 
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:277) 
    at org.apache.logging.slf4j.SLF4JLoggerContext.getLogger(SLF4JLoggerContext.java:41) 
+0

Bây giờ bạn có một phụ thuộc vòng tròn trong cấu hình SLF4J của bạn ... –

Trả lời

17

Câu trả lời được giấu trong trang manual:

Use of the Log4j 2 SLF4J Binding (log4j-slf4j-impl-2.0.jar) together with the SLF4J adapter (log4j-to-slf4j-2.0.jar) should never be attempted, as it will cause events to endlessly be routed between SLF4J and Log4j 2.

Bạn muốn giữ log4j-slf4j -impl-2.xx.jar và xóa log4j-to-slf4j-2.xx.jar.

+0

Tôi trích xuất zip Log4j từ Apache và cả hai đều nằm trong thư mục ... tất nhiên đó là ràng buộc để đi sai. ;) Cảm ơn bạn đã tiết kiệm cho tôi rất nhiều thời gian và thất vọng. – FDM

1

Có. bạn cần tệp jar SLF4J. Bạn có thể tải xuống tại: http://www.slf4j.org/download.html

+0

Tôi đã thêm những tệp này và hiện nhận được lỗi mới khi khởi động máy chủ. Bất kỳ ý tưởng gì có thể gây ra nó? –

+0

Lỗi là gì? Có lẽ cập nhật câu hỏi? – triggerNZ

0

A NoClassDefFoundError với ClassNotFoundException chỉ định rằng lớp cụ thể bị thiếu trong thời gian chạy.

Bạn phải cung cấp một trong những SLF4J thực hiện khác nhau .jar file trong classpath

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