5

私は Spring で練習しており、コンテキストをインスタンス化しようとすると java.lang.ExceptionInInitializerError 例外が発生します。例外が下に表示され、その後に私のコードが続きます。以前から実験を単純化しました。

例外

Oct 17, 2012 5:54:22 PM org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@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

私の構成 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>

私のテストクラス。

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);

}

}
4

2 に答える 2

5

17行目は該当行ではなくcontext.getBean("userRepository"、Springのコンテキストを初期化するその前の行に該当します。ClassPathXmlApplicationContextそして実際には、スタックトレースを介して、そのクラスのコンストラクターが存在する83行目で失敗したこともわかります。

とにかく、この例外は通常、Spring が何らかの理由 (コンストラクターでの例外、リソースの読み込みの問題クラスの読み込みの問題など) でBean を作成できない場合にスローされます。Spring クラスと独自のライブラリのログ レベルを下げて、その下で何が起こっているかを確認することをお勧めします。

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

また、エラーが発生した場合は、アプリケーションやすべてのオブジェクトのコンストラクターがリソース ファイルにアクセスできるかどうかも確認してください。

于 2012-10-17T13:52:22.720 に答える