मैं सेटअप करने के लिए slf4j + log4j के साथ एक परियोजना कोशिश कर रहा हूँ, लेकिन लानत बात सिर्फ काम नहीं करता है ... मैं बार आ रही है अपवाद:Log4J के साथ SLF4J को कैसे बांधें?
Failed to instantiate SLF4J LoggerFactory
Reported exception:
java.lang.NoClassDefFoundError: org/apache/log4j/Level
at org.slf4j.LoggerFactory.bind(LoggerFactory.java:129)
at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:108)
at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:302)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:276)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:288)
at TestLog.main(TestLog.java:9)
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Level
at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 6 more
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/Level
at org.slf4j.LoggerFactory.bind(LoggerFactory.java:129)
at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:108)
at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:302)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:276)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:288)
at TestLog.main(TestLog.java:9)
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Level
at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 6 more
मैं जाँच की और वर्ग org.apache.log4j.Level "मेवेन निर्भरता> log4j-1.2.17.jar" के तहत मेरी परियोजना में है। तो वीएम इसे क्यों नहीं ढूंढ सकता?
मैं नीचे दिए गए विकल्पों को पहले से ही करने की कोशिश की:
- slf4j-api + log4j
- slf4j-api + slf4j-log4j12
- slf4j-api + log4j
- slf4j-api + slf4j-log4j12 + log4j
विकल्पों में से कोई काम किया :(
यहाँ मेरी currnet pom.xml है:
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.sample</groupId>
<artifactId>DBUnitSample</artifactId>
<version>1.0</version>
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.7</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.7</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
</project>
इसके अलावा, मैंने देखा है कि जब slf4j-log4j12 जोड़ने, यह log4j एक निर्भरता के रूप में रूप में अच्छी तरह पेड़ में कहते हैं, तो मैं अनुमान लगा रहा हूँ कि स्पष्ट रूप से यहाँ log4j जोड़ने अनावश्यक है , लेकिन मैंने इसे वैसे भी जोड़ा है। अभी भी कोई भाग्य नहीं है।
मेरा मुख्य कोड बहुत सरल है:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class SampleDao {
private static final Logger log = LoggerFactory.getLogger(SampleDao.class);
public static void main(String[] args) {
System.out.println("Hello");
log.info("Logged");
}
}
और मेरे log4j.properties:
log4j.rootLogger=DEBUG, STDOUT
log4j.logger.deng=INFO
log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender
log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout
log4j.appender.STDOUT.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
कोई मुझे बता सकते हैं क्या मैं गलत कर रहा हूँ? मैंने पहले से ही SO पर उत्तरों की खोज करने का प्रयास किया है, लेकिन लॉग 4j निर्भरता जोड़ने के लिए उल्लिखित सभी उत्तरों, जिन्हें मैंने पहले से जोड़ा है ... इसलिए सुनिश्चित नहीं है कि क्या गलत है।
संपादित करें: यहां मेरी पूरी परियोजना संरचना है। मैं SampleDao
पर रा-क्लिक कर रहा हूं और इसे जावा एप्लिकेशन के रूप में चला रहा हूं। (मैं भी अब के लिए dbunit निर्भरता को हटा दिया है slf4j समस्या पर शून्य में करने के लिए)
वर्क्स का प्रयास करें, हो सकता है आपकी समस्या यह है कि आप classpath में जार जब आप अपने कार्यक्रम – morgano
आप आप कैसे कार्यक्रम चलाने करते चलाने निर्दिष्ट नहीं करते है? लॉग 4j के लिए कुछ स्पष्ट आविष्कार जोड़ने का प्रयास करें, यदि यह काम करता है, तो कारण आपके निर्माण उपकरण होंगे। – Loki
मैं ग्रहण में एम्बेडेड मेवेन का उपयोग कर रहा हूं और मैंने इसे एक मेवेन प्रोजेक्ट के रूप में बनाया है। तो मैं क्लास को जावा एप्लिकेशन के रूप में चलाने के लिए एक्लिप्स रन कॉन्फ़िगरेशन का उपयोग कर रहा हूं (आर-क्लिक> जावा एप्लिकेशन के रूप में चलाएं)। मैंने रन कॉन्फ़िगरेशन में क्लासपाथ भी चेक किया है, और मैं देख सकता हूं कि मैवेन निर्भरता इसका हिस्सा हैं। तो सुनिश्चित नहीं है कि log4j क्यों नहीं खोजा गया है। – Pat