java.lang.ExceptionInInitializerError在Spring中创建应用程序上下文时的异常

时间:2012-10-10 19:46:04

标签: java spring exception applicationcontext

我正在使用Spring练习,并且在尝试实例化上下文时遇到了java.lang.ExceptionInInitializerError异常。下面显示了Exception,我的代码跟随它。我从以前简化了我的实验。

例外

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

}

}

2 个答案:

答案 0 :(得分:4)

第17行与context.getBean("userRepository"行不对应,它对应于初始化Spring上下文之前的行。实际上你也可以通过stacktrace看到它在ClassPathXmlApplicationContext的第83行失败了,那里存在该类的构造函数。

无论如何,当Spring因任何原因无法创建任何bean时,通常会抛出此异常(构造函数中的异常,resource loading issuesclass loading issues等)。我建议降低spring类和你自己的库的日志级别,看看下面发生了什么。

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

并检查您的资源文件,如果它们产生任何错误等,您的应用程序和所有对象的构造函数是否可以访问它们。

答案 1 :(得分:0)

我遇到了同样的问题。我从项目中删除了所有的弹簧罐。 然后再将所有这些粘贴到项目文件夹中。将所有这些添加到构建路径中。 它奏效了。 不太确定它是怎么发生的..