2012-10-10 8 views
5

Ich übe mit Spring und erhalte eine java.lang.ExceptionInInitializerError-Ausnahme, wenn ich versuche, den Kontext zu instanziieren. Die Ausnahme erscheint unten, gefolgt von meinem Code. Ich habe mein Experiment von früher vereinfacht.java.lang.ExceptionInInitializerError Ausnahme beim Erstellen des Anwendungskontexts im Frühjahr

Die Exception

Oct 17, 2012 5:54:22 PM org.springframework.context.support.AbstractApplicationContext prepareRefresh 
INFO: Refreshing org[email protected]570c16b7: startup date [Wed Oct 17 17:54:22 CDT 2012]; root of context hierarchy 
Exception in thread "main" java.lang.ExceptionInInitializerError 
at org.springframework.context.support.AbstractRefreshableApplicationContext.createBeanFactory(AbstractRefreshableApplicationContext.java:195) 
at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:128) 
at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:535) 
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:449) 
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139) 
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83) 
at helloworld.HelloWorldTest.main(HelloWorldTest.java:13) 
Caused by: java.lang.NullPointerException 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.<clinit>(DefaultListableBeanFactory.java:105) 
... 7 more 

Meine Konfiguration XML

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:c="http://www.springframework.org/schema/c" 
xmlns:p="http://www.springframework.org/schema/p" 
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd"> 

<bean id="messageContainer" class="helloworld.MessageContainer"> 
    <property name="message" value="Hello World"> 
    </property> 
</bean> 

<bean id="messageOutputService" class="helloworld.MessageOutputService"> 
</bean> 

Meine Testklasse.

package helloworld; 

import org.springframework.context.ApplicationContext; 
import org.springframework.context.support.ClassPathXmlApplicationContext; 

public class HelloWorldTest { 

/** 
* @param args 
*/ 
public static void main(String[] args) 
{ 
    ApplicationContext context = new ClassPathXmlApplicationContext("HelloWorldTest-context.xml"); 

    MessageContainer message = context.getBean(MessageContainer.class); 

    MessageOutputService service = context.getBean(MessageOutputService.class); 

    service.outputMessageToConsole(message); 

} 

} 
+0

Sind Sie sicher, dass Sie die gleiche Version für alle Spring JARs auf dem Klassenpfad verwenden? –

+0

Bearbeiten Sie Ihren Beitrag und fügen Sie _entrire_ stacktrace ein. –

+0

@mattb Ich benutze die neuesten Springs Gläser, wie sie auf der Spring springspurce.org Webseite veröffentlicht wurden. – cyotee

Antwort

4

Zeile 17 entspricht nicht der context.getBean("userRepository" Linie, entspricht sie der Zeile vor, dass in dem Sie den Frühling Kontext zu initialisieren. Und tatsächlich können Sie auch sehen, dass es über Stacktrace heißt, dass es in Zeile 83 von ClassPathXmlApplicationContext fehlgeschlagen ist, wo der Konstruktor dieser Klasse existiert.

Diese Ausnahme wird normalerweise ausgelöst, wenn Spring aus irgendeinem Grund keine Bean erstellen kann (Ausnahmen in Konstruktoren, resource loading issues, class loading issues, usw.). Ich würde vorschlagen, den Loglevel für Spring-Klassen und für Ihre eigenen Bibliotheken zu verringern, um zu sehen, was darunter vor sich geht.

org.springframework=TRACE 
com.gamemanagertest=TRACE 
com.gamemanagertest=TRACE 

Und auch Ihre Ressourcendateien prüfen, ob sie von der Anwendung und Konstrukteure alle Objekte zugänglich sind, wenn sie Fehler produzieren usw.

+0

Wo könnte ich das tun? – cyotee

+0

Ich nehme an, Sie haben ein Protokollierungs-Framework installiert, konfigurieren Sie es mit den Ebenen in der Antwort angegeben, um zu sehen, was bricht. – melihcelik

0

ich das gleiche Problem gegenüberstand. Ich habe alle Frühlingsgläser aus dem Projekt entfernt. Dann eingefügt alle von ihnen in einem Projektordner & hinzugefügt alle von ihnen, um Pfad zu erstellen. Und es hat funktioniert. Nicht sehr sicher, wie es passiert ist.

Verwandte Themen