使用javaConfig找不到类

时间:2013-08-09 06:07:44

标签: java spring

我正在使用注释来动态创建Bean,我收到以下错误。

package demoproject;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class ProductFactory {

    public ProductFactory() {
        // TODO Auto-generated constructor stub
    }

    @Bean   
    public Product josh(){
        Product josh = new Battery();
        josh.setId("cdrw");
        josh.setPrice(100);
        return josh;
    }
}

的web.xml

 <!-- Bean for JavaConfig -->
   <bean  class='demoproject.ProductFactory' />
   <!-- be sure to include the JavaConfig bean post-processor -->
   <bean class="org.springframework.config.java.process.ConfigurationPostProcessor"/>

错误日志

Exception in thread "main" org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [org.springframework.config.java.process.ConfigurationPostProcessor] for bean with name 'org.springframework.config.java.process.ConfigurationPostProcessor#0' defined in class path resource [web.xml]; nested exception is java.lang.ClassNotFoundException: org.springframework.config.java.process.ConfigurationPostProcessor
    at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1275)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:575)
    at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1344)
    at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:910)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:607)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
    at demoproject.ProductCreater.main(ProductCreater.java:31)
Caused by: java.lang.ClassNotFoundException: org.springframework.config.java.process.ConfigurationPostProcessor
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at org.springframework.util.ClassUtils.forName(ClassUtils.java:260)
    at org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:416)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doResolveBeanClass(AbstractBeanFactory.java:1296)
    at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1267)
    ... 9 more

我怎么知道导致错误的原因,我可以尝试解决这个问题吗?

2 个答案:

答案 0 :(得分:17)

从3月3日开始,您不再需要 org.springframework.config.java.process.ConfigurationPostProcessor ,只需将Java-config类定义为XML-config中的bean即可。

<bean class="demoproject.ProductFactory" />

尝试删除

<bean class="org.springframework.config.java.process.ConfigurationPostProcessor"/>

答案 1 :(得分:0)

您的运行时类路径上没有spring-core。您需要使用适合您项目布局的技术添加它,例如将其添加到像Simon建议的Maven POM中。