2016-11-26 1 views
0

Ich habe den folgenden Code.Spring 4.2 ApplicationContext NoClassDefFound Fehler

// MessagePrinter.java 
public class MessagePrinter { 
    private String message; 
    public MessagePrinter(String input){ 
     message = input; 
    } 
} 

// ApplicationConfig.java 
@Configuration 
public class ApplicationConfig { 

    @Bean 
    public MessagePrinter getMessagePrinter(){ 
     return new MessagePrinter("Bean"); 
    } 
} 

// Application.java 
public class Application { 
    public static void main(String[] args) {  
     ApplicationContext context = new AnnotationConfigApplicationContext(ApplicationConfig.class); 
    } 
} 

Die Störung, die ich erhalte, wenn ich Anwendung in Eclipse ausgeführt ist java.lang.NoClassDefFoundError. Ich bin dabei, von cplusplus nach Java zu migrieren und brandneuer in den Frühjahrsrahmen. All die Dokumentation, die ich online gelesen habe, sagt mir, dass dieser Code gut funktionieren sollte. Mein Ziel ist es, die MessagePrinter-Klasse aus dem ApplicationContext zu extrahieren, der in main erstellt wird. Die erste Anweisung selbst verursacht jedoch den Absturz des Codes. Irgendwelche Hinweise? Ich bin ein absoluter Java-Noob. Also zögern Sie nicht, auf das Offensichtlichste hinzuweisen.

ich verwende Frühling 4.2.7

Die tatsächliche Fehlermeldung von Eclipse unten.

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory 
at org.springframework.context.support.AbstractApplicationContext.<init>(AbstractApplicationContext.java:159) 
at org.springframework.context.support.GenericApplicationContext.<init>(GenericApplicationContext.java:102) 
at org.springframework.context.annotation.AnnotationConfigApplicationContext.<init>(AnnotationConfigApplicationContext.java:60) 
at org.springframework.context.annotation.AnnotationConfigApplicationContext.<init>(AnnotationConfigApplicationContext.java:82) 
at hello.Application.main(Application.java:8) 
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory 
at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
... 5 more 
+0

hinzugefügt haben, die erforderlichen Federbezogenen Gläser in Classpath? –

+0

Ich habe die Spring-4.2.7-Jars als externe Jars im Build-Pfad für die Eclipse-Projekteigenschaften hinzugefügt. Ist es das was du meinst? Ich habe die Gläser nicht in den lokalen Ordner kopiert. – cplusplusrat

+0

Ich weiß nicht, welche Frühlingsgläser du benutzt. 'AnnotationConfigApplicationContext' befindet sich im Spring-Context-Jar. –

Antwort

1

Sie fehlen commons-logging.jar in Ihrem Klassenpfad. Dieses Glas wird von Federkern benötigt.

Wenn Ihr Projekt ist ein Maven-Projekt in diesem Abschnitt in Abhängigkeiten zu Ihrem pom.xml hinzufügen

<!-- https://mvnrepository.com/artifact/commons-logging/commons-logging --> 
<dependency> 
    <groupId>commons-logging</groupId> 
    <artifactId>commons-logging</artifactId> 
    <!-- change version as applicable --> 
    <version>1.2</version> 
</dependency> 

Sie manuell die Gläser in Eclipse hinzufügen kann. Download Gläser von

https://mvnrepository.com/artifact/commons-logging/commons-logging/1.2

+0

OK, ich habe das Projekt mit einem Assistenten in Eclipse erstellt. Verdächtige es nicht ein Maven-Projekt (ich weiß nicht, was Maven ist). Ich werde versuchen, das Glas manuell hinzuzufügen. Gab es einen logischen Weg aus dem Fehler, um das fehlende Glas herauszufinden? – cplusplusrat

+0

Ihre Frage ist berechtigt, und das hat mich geärgert, als ich mit Java anfing (nicht dass ich jetzt Experte bin). Aber im Allgemeinen, wenn man sich mit Werkzeugen rund um Java vertraut macht, fangen sie an, Tools wie Maven/Gradle zu verwenden, um ein Projekt einzurichten und Abhängigkeiten aufzulösen. Maven hätte Commons-Logging automatisch heruntergeladen und zum Classpath hinzugefügt. Mach dir keine Sorgen, dieser anfängliche Kampf wird dir auf lange Sicht helfen. Ich beschuldige das Tutorial, das du verfolgst (wenn es nicht erwähnt, benötigte Gläser auch zu addieren). Für jetzt fügen Sie Gläser manuell hinzu und versuchen Sie es erneut. :) –

+0

Entschuldigung für das späte Follow-up. Aber ja, ich habe es funktioniert, indem ich noch ein paar externe Gläser hinzugefügt habe. Commons-Logging wurde definitiv benötigt, aber es löste das Problem nicht vollständig. Ich musste ein paar mehr hinzufügen, aber es hat schließlich funktioniert. Das hat mich in die richtige Richtung gelenkt. Vielen Dank. – cplusplusrat

Verwandte Themen