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 回答
0

我面临着同样的问题。我从项目中删除了所有的弹簧罐。然后再次将它们全部粘贴到项目文件夹中并将它们全部添加到构建路径中。它奏效了。不太清楚是怎么发生的。。

于 2016-04-29T09:10:02.610 回答