使用javaConfig找不到类

使用javaConfig找不到类,java,spring,Java,Spring,我正在使用注释动态创建一个Bean,我得到以下错误 package demoproject; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class ProductFactory { public ProductFactory() { // TO

我正在使用注释动态创建一个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
线程“main”org.springframework.beans.factory.CannotLoadBeanClasseException中的异常:找不到类路径资源[web.xml]中定义的名为“org.springframework.config.java.process.ConfigurationPostProcessor”的bean的类[org.springframework.config.java.process.ConfigurationPostProcessor];嵌套异常是java.lang.ClassNotFoundException:org.springframework.config.java.process.ConfigurationPostProcessor
位于org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1275)
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:575)
位于org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1344)
位于org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:910)
位于org.springframework.beans.factory.support.DefaultListableBeanFactory.PreInstanceSingleton(DefaultListableBeanFactory.java:607)
位于org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)
位于org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)
位于org.springframework.context.support.ClassPathXmlApplicationContext。(ClassPathXmlApplicationContext.java:139)
位于org.springframework.context.support.ClassPathXmlApplicationContext。(ClassPathXmlApplicationContext.java:83)
位于demoproject.ProductCreater.main(ProductCreater.java:31)
原因:java.lang.ClassNotFoundException:org.springframework.config.java.process.ConfigurationPostProcessor
位于java.net.URLClassLoader$1.run(未知源)
位于java.net.URLClassLoader$1.run(未知源)
位于java.security.AccessController.doPrivileged(本机方法)
位于java.net.URLClassLoader.findClass(未知源)
位于java.lang.ClassLoader.loadClass(未知源)
位于sun.misc.Launcher$AppClassLoader.loadClass(未知源)
位于java.lang.ClassLoader.loadClass(未知源)
位于org.springframework.util.ClassUtils.forName(ClassUtils.java:260)
位于org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:416)
位于org.springframework.beans.factory.support.AbstractBeanFactory.doResolveBeanClass(AbstractBeanFactory.java:1296)
位于org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1267)
... 9更多

我如何知道导致错误的原因,以及是否有任何可以尝试的修复方法?

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

从spring 3.0开始,您不再需要org.springframework.config.java.process.ConfigurationPostProcessor,只需将java配置类定义为XML配置中的bean即可

<bean class="demoproject.ProductFactory" />

试着删除

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


删除了该注释,因为它与另一个问题非常相似,我认为他们在spring 3中对此进行了修改。当然,他可能正在使用一个旧版本的Spring。他仍然在使用基于XML的配置,所以不清楚。这是Spring3.2。我试着在重复的问题中把已接受的答案标记为已接受。现在我看到“没有定义名为‘josh’的bean”,我使用的是spring3.2。同样的错误是说豆子josh没有被定义为hanks。在我看到这篇文章之前,我得到了过时的信息。为什么它没有在spring文档中更新?明白了吗?我没有告诉spring查找注释并扫描我的包