Beheben Sie den Java.Lang.NoClassDefFoundError: Org/Apache/Commons/Logging/LogFactory-Fehler

Sheeraz Gul 20 Juni 2023
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:

  1. Die JAR-Dateien von Apache Commons Logging sind nicht korrekt oder nicht vorhanden.
  2. 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 Gul avatar Sheeraz Gul avatar

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 Facebook

Verwandter Artikel - Java Error