【问题标题】:Initialization of bean failed; nested exception is org.springframework.beansbean初始化失败;嵌套异常是 org.springframework.beans
【发布时间】:2014-12-09 14:55:19
【问题描述】:

我将模型类保存在 com.anand.model.Employee.java 和 我在 sdnext-servlet.xml 中正确提到了 annotatedClasses。 但我仍然收到错误消息。请帮我解决这个问题。

sdnext-servlet.xml

<bean id="sessionFactory"
        class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="annotatedClasses">
            <list>
                <value>com.anand.model.Employee</value>
            </list>
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">${hibernate.dialect}</prop>
                <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
                <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>             
            </props>
        </property>
    </bean>

模型类:Employee.java

package com.anand.model;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

/**
 * @author Anand Gopalan
 *
 */
@Entity
@Table(name="Employee")
public class Employee implements Serializable{

    private static final long serialVersionUID = -723583058586873479L;

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    @Column(name = "empid")
    private Integer empId;

    @Column(name="empname")
    private String empName;

    @Column(name="empaddress")
    private String empAddress;

    @Column(name="salary")
    private Long salary;

    @Column(name="empAge")
    private Integer empAge;

    public Integer getEmpId() {
        return empId;
    }

    public void setEmpId(Integer empId) {
        this.empId = empId;
    }

    public String getEmpName() {
        return empName;
    }

    public void setEmpName(String empName) {
        this.empName = empName;
    }

    public String getEmpAddress() {
        return empAddress;
    }

    public void setEmpAddress(String empAddress) {
        this.empAddress = empAddress;
    }

    public Long getSalary() {
        return salary;
    }

    public void setSalary(Long salary) {
        this.salary = salary;
    }

    public Integer getEmpAge() {
        return empAge;
    }

    public void setEmpAge(Integer empAge) {
        this.empAge = empAge;
    }

}

日志:

严重:StandardWrapper.Throwable org.springframework.beans.factory.BeanCreationException: 错误 创建 ServletContext 中定义的名称为“sessionFactory”的 bean 资源[/WEB-INF/config/sdnext-servlet.xml]:bean的初始化 失败的;嵌套异常是 org.springframework.beans.TypeMismatchException:转换失败 “java.util.ArrayList”类型的属性值到所需类型 属性“annotatedClasses”的“java.lang.Class[]”;嵌套异常 是 java.lang.IllegalArgumentException: 找不到类 [com.anand.model.Employee] 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:521) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450) 在 org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:290) 在 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 在 org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:287) 在 org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:189) 在 org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:545) 在 org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:871) 在 org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:423) 在 org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:443) 在 org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:459) 在 org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:340) 在 org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:307) 在 org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:127) 在 javax.servlet.GenericServlet.init(GenericServlet.java:158) 在 org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1284) 在 org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1197) 在 org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1087) 在 org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5229) 在 org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5516) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 在 org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1575) 在 org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1565) 在 java.util.concurrent.FutureTask.run(Unknown Source) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(未知来源)在 java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) 原因: org.springframework.beans.TypeMismatchException:转换失败 “java.util.ArrayList”类型的属性值到所需类型 属性“annotatedClasses”的“java.lang.Class[]”;嵌套异常 是 java.lang.IllegalArgumentException: 找不到类 [com.anand.model.Employee] 在 org.springframework.beans.BeanWrapperImpl.convertForProperty(BeanWrapperImpl.java:457) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.convertForProperty(AbstractAutowireCapableBeanFactory.java:1354) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1313) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1067) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:511) ... 26 更多原因:java.lang.IllegalArgumentException:不能 在 [com.anand.model.Employee] 中找到类 org.springframework.util.ClassUtils.resolveClassName(ClassUtils.java:294) 在 org.springframework.beans.propertyeditors.ClassEditor.setAsText(ClassEditor.java:64) 在 org.springframework.beans.TypeConverterDelegate.doConvertTextValue(TypeConverterDelegate.java:474) 在 org.springframework.beans.TypeConverterDelegate.doConvertValue(TypeConverterDelegate.java:446) 在 org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:215) 在 org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:122) 在 org.springframework.beans.TypeConverterDelegate.convertToTypedArray(TypeConverterDelegate.java:485) 在 org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:227) 在 org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:154) 在 org.springframework.beans.BeanWrapperImpl.convertForProperty(BeanWrapperImpl.java:452) ... 30 更多原因:java.lang.ClassNotFoundException: com.anand.model.Employee 在 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720) 在 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571) 在 org.springframework.util.ClassUtils.forName(ClassUtils.java:258) 在 org.springframework.util.ClassUtils.resolveClassName(ClassUtils.java:291) ... 39 更多

2014 年 10 月 14 日上午 11:40:35 org.apache.catalina.core.StandardContext loadOnStartup 严重:Servlet /sdnext 抛出 load() 异常 java.lang.ClassNotFoundException:com.anand.model.Employee 在 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720) 在 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571) 在 org.springframework.util.ClassUtils.forName(ClassUtils.java:258) 在 org.springframework.util.ClassUtils.resolveClassName(ClassUtils.java:291) 在 org.springframework.beans.propertyeditors.ClassEditor.setAsText(ClassEditor.java:64) 在 org.springframework.beans.TypeConverterDelegate.doConvertTextValue(TypeConverterDelegate.java:474) 在 org.springframework.beans.TypeConverterDelegate.doConvertValue(TypeConverterDelegate.java:446) 在 org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:215) 在 org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:122) 在 org.springframework.beans.TypeConverterDelegate.convertToTypedArray(TypeConverterDelegate.java:485) 在 org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:227) 在 org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:154) 在 org.springframework.beans.BeanWrapperImpl.convertForProperty(BeanWrapperImpl.java:452) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.convertForProperty(AbstractAutowireCapableBeanFactory.java:1354) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1313) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1067) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:511) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450) 在 org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:290) 在 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 在 org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:287) 在 org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:189) 在 org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:545) 在 org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:871) 在 org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:423) 在 org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:443) 在 org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:459) 在 org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:340) 在 org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:307) 在 org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:127) 在 javax.servlet.GenericServlet.init(GenericServlet.java:158) 在 org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1284) 在 org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1197) 在 org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1087) 在 org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5229) 在 org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5516) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 在 org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1575) 在 org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1565) 在 java.util.concurrent.FutureTask.run(Unknown Source) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(未知来源)在 java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(未知来源)

【问题讨论】:

  • 你应该清除并重建

标签: hibernate spring-mvc


【解决方案1】:

这是您所做的替代方法。尝试将 annotatedClasses 替换为配置中的以下元素,然后清理构建工作区 + 重新启动服务器。

<property name="packagesToScan">
    <list>
        <value>com.anand.model</value>           
    </list>
</property>

【讨论】:

  • 为什么用 packagesToScan 替换 annotatedClasses 有效?能详细点吗?
  • 但此代码不起作用,请提供另一种解决方案。
【解决方案2】:

您的问题的解决方案:清理 maven 并再次更新 maven,然后构建它。它会工作,因为这个原因,maven 缺少一些包,它会显示错误,所以一旦清理并更新 maven

【讨论】:

    【解决方案3】:

    尝试清理 Maven 文件并构建它并清理项目,并清理服务器工作目录和清理服务器。并运行项目。它会起作用的。

    【讨论】:

    • 预期的命令序列会有所帮助,并说明每个命令的作用。更多一点的演练方法。
    猜你喜欢
    • 1970-01-01
    • 2011-04-13
    • 2023-03-26
    • 2018-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-10
    • 2017-06-10
    相关资源
    最近更新 更多