【问题标题】:Spring Error in creating bean with name propertyPlaceholderConfigurer defined in Classpath使用 Classpath 中定义的名称 propertyPlaceholderConfigurer 创建 bean 时出现 Spring 错误
【发布时间】:2011-04-04 21:35:57
【问题描述】:

各位专家

我们正在使用 ClassPathXmlApplicationContext 在类路径中加载带有 xml 文件的 bean。 它从类路径中查找并加载 xml 文件,但在具有 propertyPlaceholderConfigurer bean 引用类路径中的属性文件的 xml 文件之一中。它抛出空指针异常,无法创建 propertyPlaceholderConfigurer bean。

不确定它是否读取属性文件,即使它是类路径,因为它可以读取其他 xml 文件? 属性文件有损坏数据的机会吗? 关于可能是什么问题的任何线索?

Error creating bean with name 'propertyPlaceholderConfigurer' defined in class path resource [ws.xml]: Initialization of bean failed; nested exception is java.lang.NullPointerException
    at com.ibm.ejs.container.StatelessBeanO.initialize(StatelessBeanO.java:375)
    at com.ibm.ejs.container.BMStatelessBeanOFactory.create(BMStatelessBeanOFactory.java:45)
    at com.ibm.ejs.container.EJSHome.createBeanO(EJSHome.java:1031)
    at com.ibm.ejs.container.EJSHome.createBeanO(EJSHome.java:1141)
    at com.ibm.ejs.container.activator.UncachedActivationStrategy.atActivate(UncachedActivationStrategy.java:84)
    at com.ibm.ejs.container.activator.Activator.activateBean(Activator.java:599)
    at com.ibm.ejs.container.EJSContainer.preInvokeActivate(EJSContainer.java:3964)
    at com.ibm.ejs.container.EJSContainer.preInvoke(EJSContainer.java:3269)
    at com.ibm.websphere.scheduler.EJSRemoteStatelessMeFBatchHandler_fb00fe87.process(EJSRemoteStatelessMeFBatchHandler_fb00fe87.java:27)
    at com.ibm.websphere.scheduler._TaskHandler_Stub.process(_TaskHandler_Stub.java:269)
    at com.ibm.ws.scheduler.tasks.BeanTaskInfoWork.doWork(BeanTaskInfoWork.java:126)
    at com.ibm.ws.scheduler.AlarmListener.executeTaskWithNotification(AlarmListener.java:796)
    at com.ibm.ws.scheduler.AlarmListener.access$700(AlarmListener.java:121)
    at com.ibm.ws.scheduler.AlarmListener$TaskWork.doWork(AlarmListener.java:427)
    at com.ibm.ws.scheduler.AlarmListener$TaskWork.run(AlarmListener.java:213)
    at com.ibm.ws.asynchbeans.J2EEContext.run(J2EEContext.java:782)
    at com.ibm.ws.asynchbeans.ExecutionContextImpl.go(ExecutionContextImpl.java:86)
    at com.ibm.ws.scheduler.AlarmListener.fireTask(AlarmListener.java:1401)
    at com.ibm.ws.scheduler.AlarmListener.fired(AlarmListener.java:1319)
    at com.ibm.ws.asynchbeans.AlarmImpl.callListenerMethod(AlarmImpl.java:340)
    at com.ibm.ws.asynchbeans.timer.GenericTimer.run(GenericTimer.java:216)
    at com.ibm.ws.asynchbeans.J2EEContext.run(J2EEContext.java:1150)
    at com.ibm.ws.asynchbeans.AlarmImpl.runListenerAsCJWork(AlarmImpl.java:175)
    at com.ibm.ws.asynchbeans.am._Alarm.fireAlarm(_Alarm.java:333)
    at com.ibm.ws.asynchbeans.am._Alarm.run(_Alarm.java:230)
    at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1550)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'propertyPlaceholderConfigurer' defined in class path resource [ws.xml]: Initialization of bean failed; nested exception is java.lang.NullPointerException
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:478)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
    at java.security.AccessController.doPrivileged(AccessController.java:224)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:217)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
    at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:516)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:363)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:93)

【问题讨论】:

  • 这是哪个版本的 Spring?行号与我正在查看的源不完全匹配,即 3.0.4.RELEASE。
  • 您可以发布您的 PropertyPlaceholdConfigurer 的 xml 定义吗?

标签: java spring


【解决方案1】:

new ClassPathXmlApplicationContext(a.xml ,b.xml,c.xml);

返回空指针异常n 因为在 c.xml 中定义了 propertyPlaceholderConfigurer bean,它引用了类路径中的属性文件。

【讨论】:

  • 升级到 Spring 2.5.6 后问题得到解决,这是 Spring2.5.3 和 WAS7.0 附带的 JRE1.6 之间的兼容性问题
【解决方案2】:

检查您的 Spring 库。如果它们的版本混合/不匹配,则删除旧版本的 jar 并替换为新版本的 jar。

【讨论】:

    猜你喜欢
    • 2020-02-23
    • 2016-02-19
    • 1970-01-01
    • 2017-04-17
    • 1970-01-01
    • 2018-08-16
    • 2016-06-21
    • 2021-01-28
    • 1970-01-01
    相关资源
    最近更新 更多