我正在使用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);
}
}
答案 0 :(得分:4)
第17行与context.getBean("userRepository"
行不对应,它对应于初始化Spring上下文之前的行。实际上你也可以通过stacktrace看到它在ClassPathXmlApplicationContext
的第83行失败了,那里存在该类的构造函数。
无论如何,当Spring因任何原因无法创建任何bean时,通常会抛出此异常(构造函数中的异常,resource loading issues,class loading issues等)。我建议降低spring类和你自己的库的日志级别,看看下面发生了什么。
org.springframework=TRACE
com.gamemanagertest=TRACE
com.gamemanagertest=TRACE
并检查您的资源文件,如果它们产生任何错误等,您的应用程序和所有对象的构造函数是否可以访问它们。
答案 1 :(得分:0)
我遇到了同样的问题。我从项目中删除了所有的弹簧罐。 然后再将所有这些粘贴到项目文件夹中。将所有这些添加到构建路径中。 它奏效了。 不太确定它是怎么发生的..