Beheben Sie den Java.Lang.NoClassDefFoundError: Org/Apache/Commons/Logging/LogFactory-Fehler
Dieses Tutorial demonstriert den Fehler java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
in Java.
Beheben Sie den java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
Bei Verwendung von Apache Commons und Spring kann beim Einfügen der Abhängigkeiten der Fehler java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
auftreten. Der Fehler sieht normalerweise so aus:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
at org.springframework.context.support.AbstractApplicationContext.<init>(AbstractApplicationContext.java:119)
at org.springframework.context.support.AbstractXmlApplicationContext.<init>(AbstractXmlApplicationContext.java:55)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:77)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:65)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:56)
at com.client.StoryReader.main(StoryReader.java:15)
Die Gründe für diesen Fehler sind:
- Die JAR-Dateien von Apache Commons Logging sind nicht korrekt oder nicht vorhanden.
- Commons Logging wird nicht zu den Abhängigkeiten hinzugefügt.
Hier sind die Lösungen aus den oben genannten Gründen, um dieses Problem zu lösen:
Fügen Sie die richtigen Apache Commons Logging Jars hinzu
Wenn die Apache Commons Logging-Jars nicht zum Build-Pfad Ihres Projekts hinzugefügt werden oder die hinzugefügten Dateien nicht korrekt sind, wird der Fehler java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
ausgegeben.
Führen Sie die folgenden Schritte aus, um dieses Problem zu lösen:
-
Laden Sie die Apache Commons Logging-Jars von hier herunter.
-
Fügen Sie die JAR-Dateien dem Erstellungspfad Ihres Projekts hinzu.
Die beiden obigen Schritte sollten den Fehler java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
beheben. Wenn Sie Maven oder Spring verwenden, müssen Sie Abhängigkeiten hinzufügen.
Hinzufügen von Commons-Protokollierung zu Abhängigkeiten
Wenn Sie Maven verwenden und Apache Commons-Logging in den Abhängigkeiten fehlt, wird der Fehler java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
ausgegeben. Fügen Sie die folgende Abhängigkeit zu pom.xml
hinzu:
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
Das Hinzufügen der obigen Abhängigkeit löst das Problem für Maven.
Bei Verwendung der Spring-Anwendung schließen die Entwickler manchmal das Commons Logging aus, vergessen aber, einen weiteren Protokollierungsframe einzufügen, da die Anwendung das Protokollierungsframework erfordert:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
Die obige pom.xml
ist für die Spring-Anwendung, und wie wir sehen können, ist das Commons-Logging ausgeschlossen; Aus diesem Grund wird der Fehler java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
ausgegeben.
Um dieses Problem zu lösen, müssen wir ein weiteres Protokollierungsframework hinzufügen. Meistens verwenden die Entwickler das SLF4j
-Logging. Wir müssen auch die Protokollierung der Quelle über eine Brücke umleiten.
Fügen Sie Folgendes zu pom.xml
der Spring-Anwendung hinzu:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- Redirect the Spring logging -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${jcl.slf4j.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback.version}</version>
</dependency>
Das Befolgen des obigen Prozesses für Maven und Spring behebt den Fehler java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
.
Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.
LinkedIn FacebookVerwandter Artikel - Java Error
- Adresse wird bereits verwendet JVM_Bind-Fehler in Java
- Android Java.Lang.IllegalStateException behoben: Methode der Aktivität konnte nicht ausgeführt werden
- Ausnahme im Hauptthread Java.Lang.ClassNotFoundException in IntelliJ IDEA
- Ausnahme im Hauptthread Java.Lang.NoClassDefFoundError
- Beheben Sie das Problem, dass Java nicht installiert werden kann. Es gibt Fehler in den folgenden Schaltern
- Beheben Sie den Fehler `Es wurde keine Java Virtual Machine gefunden` in Eclipse