创建bean时出错:bean实例化失败;嵌套异常为java.lang.ExceptionInInitializeError
当我尝试使用circle类的应用程序上下文创建bean时,我面临以下错误!Circle类实现了创建bean时出错:bean实例化失败;嵌套异常为java.lang.ExceptionInInitializeError,java,spring,Java,Spring,当我尝试使用circle类的应用程序上下文创建bean时,我面临以下错误!Circle类实现了Shape接口,该接口包含一个方法draw() 配置: 我正在学习spring,并在eclipse中设置了一个Java项目,其中包含所有必需的JAR(spring和ApacheCommons日志)。我在src文件夹的类路径中有spring.xml。还尝试下载了最新的JAR(Spring 4.0.4版本,以前使用4.0.0),但现在不起作用。无法想出任何解决方案来解决此问题 错误: May 11, 201
Shape
接口,该接口包含一个方法draw()
配置:
我正在学习spring,并在eclipse中设置了一个Java项目,其中包含所有必需的JAR(spring和ApacheCommons日志)。我在src文件夹的类路径中有spring.xml。还尝试下载了最新的JAR(Spring 4.0.4版本,以前使用4.0.0),但现在不起作用。无法想出任何解决方案来解决此问题
错误:
May 11, 2014 6:20:50 PM org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@90832e: startup date [Sun May 11 18:20:50 EDT 2014]; root of context hierarchy
May 11, 2014 6:20:50 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [spring.xml]
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.context.annotation.internalConfigurationAnnotationProcessor': Instantiation of bean failed; nested exception is java.lang.ExceptionInInitializerError
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1076)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1021)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:504)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:304)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:300)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200)
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:88)
at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:609)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
at com.springApplication.DrawingApplication.main(DrawingApplication.java:16)
Caused by: java.lang.ExceptionInInitializerError
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1071)
... 13 more
Caused by: java.lang.NullPointerException
at org.springframework.beans.PropertyEditorRegistrySupport.<clinit>(PropertyEditorRegistrySupport.java:92)
... 14 more
java
package com.springApplication;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
public class Circle implements Shape{
private Point center;
public Point getCenter() {
return center;
}
@Autowired
@Qualifier("circleRelated")
public void setCenter(Point center) {
this.center = center;
}
@Override
public void draw() {
System.out.println("Drawing a Circle");
System.out.println("Center Point is: (" + center.getX() + ", " + center.getY() + ")");
}
}
Point.java
package com.springApplication;
public class Point {
private int x;
private int y;
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
}
spring.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:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<bean id="pointA" class="com.springApplication.Point">
<qualifier value="circleRelated" />
<property name="x" value="0"/>
<property name="y" value="0"/>
</bean>
<bean id="PointB" class="com.springApplication.Point">
<property name="x" value="0"/>
<property name="y" value="20"/>
</bean>
<bean id="PointC" class="com.springApplication.Point">
<property name="x" value="-20"/>
<property name="y" value="0"/>
</bean>
<bean id="circle" class="com.springApplication.Circle">
</bean>
<!-- <bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor" /> -->
<context:annotation-config/>
</beans>
如果还需要什么,请告诉我。有人请帮忙
对不起,放错地方了
@安德烈·斯特凡罐子列表------------
commons-logging-1.1.3
spring-aop-4.0.4.释放
spring-aop-4.0.4.发布javadoc
spring-aop-4.0.4.发布源
spring-aspects-4.0.4.发布
spring-aspects-4.0.4.发布javadoc
spring-aspects-4.0.4.发布源
spring-beans-4.0.4.发布
spring-beans-4.0.4.发布javadoc
spring-beans-4.0.4.发布源
spring-build-src-4.0.4.发布
spring-context-4.0.4.发布
spring-context-4.0.4.发布javadoc
spring-context-4.0.4.发布源代码
spring-context-support-4.0.4.发布
spring-context-support-4.0.4.发布javadoc
spring-context-support-4.0.4.发布源代码
弹簧芯-4.0.4.释放
spring-core-4.0.4.发布javadoc
spring-core-4.0.4.发布源
spring-expression-4.0.4.释放
spring-expression-4.0.4.发布javadoc
spring-expression-4.0.4.发布源
spring-framework-bom-4.0.4.发布
spring-framework-bom-4.0.4.发布javadoc
spring-framework-bom-4.0.4.发布源
弹簧-仪表-4.0.4.释放
spring-instrument-4.0.4.发布javadoc
spring-instrument-4.0.4.释放源
spring-instrument-tomcat-4.0.4.释放
spring-instrument-tomcat-4.0.4.发布javadoc
spring-instrument-tomcat-4.0.4.释放源
spring-jdbc-4.0.4.发布
spring-jdbc-4.0.4.发布javadoc
spring-jdbc-4.0.4.发布源代码
spring-jms-4.0.4.发布
spring-jms-4.0.4.发布javadoc
spring-jms-4.0.4.发布源代码
spring-messaging-4.0.4.发布
spring-messaging-4.0.4.发布javadoc
spring-messaging-4.0.4.发布源
spring-orm-4.0.4.释放
spring-orm-4.0.4.发布javadoc
spring-orm-4.0.4.发布源
spring-oxm-4.0.4.释放
spring-oxm-4.0.4.发布javadoc
spring-oxm-4.0.4.发布源
弹簧试验-4.0.4.释放
spring-test-4.0.4.发布javadoc
spring-test-4.0.4.释放源
spring-tx-4.0.4.释放
spring-tx-4.0.4.发布javadoc
spring-tx-4.0.4.释放源
spring-web-4.0.4.发布
spring-web-4.0.4.发布javadoc
spring-web-4.0.4.发布源
spring-webmvc-4.0.4.发布
spring-webmvc-4.0.4.发布javadoc
spring-webmvc-4.0.4.发布源代码
spring-webmvc-portlet-4.0.4.发布
spring-webmvc-portlet-4.0.4.发布javadoc
spring-webmvc-portlet-4.0.4.发布源
弹簧-websocket-4.0.4.释放
spring-websocket-4.0.4.发布javadoc
spring-websocket-4.0.4.释放源
所有这些以及其他默认系统库都被引用 出现问题的原因是
PropertyEditorRegistrySupport.class.getClassLoader()
是null
。根据JavaDoc,如果类PropertyEditorRegistrySupport
是由引导类装入器而不是系统类装入器装入的,则会发生这种情况:
一些实现可能使用null来表示引导类加载器如果该类是由引导类装入器装入的,则该方法在此类实现中将返回null。
可能您的Spring库位于认可的类路径上?出现问题的原因是
PropertyEditorRegistrySupport.class.getClassLoader()
是null
。根据JavaDoc,如果类PropertyEditorRegistrySupport
是由引导类装入器而不是系统类装入器装入的,则会发生这种情况:
一些实现可能使用null来表示引导类加载器如果该类是由引导类装入器装入的,则该方法在此类实现中将返回null。
也许您的Spring库位于认可的类路径上?从stacktrace的底部开始-我在那里看到一个NullPointerException(除非您没有包含更多)。真正的问题是在org.springframework.beans.PropertyEditorRegistrySupport抛出一个NPE;ie在此类的静态初始值设定项中。什么地方的配置错误?问题是没有与NPE相关联的消息,所以很难判断那里发生了什么?请发布一个列表。从stacktrace的底部开始-我在那里看到一个NullPointerException(除非您没有包括更多)。真正的问题是在org.springframework.beans.PropertyEditorRegistrySupport抛出一个NPE;ie在此类的静态初始值设定项中。什么地方的配置错误?问题是没有与NPE相关联的消息,所以很难判断那里发生了什么?请发布一个列表。是的,我所有的Spring库都在我的类路径上。你能不能再解释一下什么是引导类加载器和系统加载器?eclipse创建的类路径文件如下所示:非常感谢Christoph。我找到了解决办法。在eclipse中添加库时,它要求您提供一个选项,将用户库添加到引导类加载器中。我取消选中复选框,我的代码现在运行正常。谢谢你的提示!高兴的