【问题标题】:I am working with spring 4 and hibernate 4, I have showed my configuration file and libs , but getting UnsatisfiedDependencyException我正在使用 spring 4 和 hibernate 4,我已经展示了我的配置文件和 libs ,但是得到了 UnsatisfiedDependencyException
【发布时间】:2017-12-20 07:28:26
【问题描述】:

缺少哪个jar文件:

org.springframework.beans.factory.UnsatisfiedDependencyException: 创建名为“myHomeController”的 bean 时出错:不满意 通过字段“scm_service”表示的依赖关系;嵌套异常是 org.springframework.beans.factory.UnsatisfiedDependencyException: 创建名为“scmServiceImpl”的 bean 时出错:不满足的依赖关系 通过字段 'scmdao' 表示;嵌套异常是 org.springframework.beans.factory.UnsatisfiedDependencyException: 创建名为“scmDaoImpl”的 bean 时出错:不满足的依赖关系 通过字段“sessionFactory”表示;嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建 ServletContext 中定义的名称为“sessionFactory”的 bean 资源 [/WEB-INF/dispatcher-servlet.xml]:init 方法的调用 失败的;嵌套异常是 java.lang.UnsupportedClassVersionError: javax/transaction/SystemException:不支持的major.minor版本 org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:588) 51.0(无法加载类 javax.transaction.SystemException) 在 org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88) 在 org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:366) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1264) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483) 在 org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) 在 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) 在 org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) 在 org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) 在 org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:761) 在 org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867) 在 org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:543) 在 org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:668) 在 org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:634) 在 org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:682) 在 org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:553) 在 org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:494) 在 org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:171) 在 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:5266) 在 org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5554) 在 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$Sync.innerRun(Unknown Source) 在 java.util.concurrent.FutureTask.run(未知来源)在 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(未知来源) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(未知来源) 在 java.lang.Thread.run(Unknown Source) 引起: org.springframework.beans.factory.UnsatisfiedDependencyException: 创建名为“scmServiceImpl”的 bean 时出错:不满足的依赖关系 通过字段 'scmdao' 表示;嵌套异常是 org.springframework.beans.factory.UnsatisfiedDependencyException: 创建名为“scmDaoImpl”的 bean 时出错:不满足的依赖关系 通过字段“sessionFactory”表示;嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建 ServletContext 中定义的名称为“sessionFactory”的 bean 资源 [/WEB-INF/dispatcher-servlet.xml]:init 方法的调用 失败的;嵌套异常是 java.lang.UnsupportedClassVersionError: javax/transaction/SystemException:不支持的major.minor版本 org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:588) 51.0(无法加载类 javax.transaction.SystemException) 在 org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88) 在 org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:366) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1264) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483) 在 org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) 在 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) 在 org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) 在 org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) 在 org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:208) 在 org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1138) 在 org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066) 在 org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:585) ... 32 更多

我的库中有这些罐子

jboss-logging-3.1.1.GA.jar
activation-1.0.2.jar
antlr-2.7.7.jar
aopalliance-repackaged-2.4.0-b06.jar
apache-logging-log4j.jar
commons-beanutils-1.7.0.jar
commons-collections-3.2.1.jar
commons-logging-1.1.1.jar
dom4j-1.6.1.jar
hibernate-commons-annotations-4.0.1.Final.jar
hibernate-core-4.0.1.Final.jar
hibernate-entitymanager-4.0.1.Final.jar
hibernate-jpa-2.0-api-1.0.1.Final.jar
javassist-3.4.GA.jar
javax.transaction-api-1.2.jar
jstl-1.2.jar
jta-1.1.jar
postgresql-8.4-701.jdbc3.jar
spring-aop-4.3.9.RELEASE.jar
spring-aspects-4.3.9.RELEASE.jar
spring-beans-4.3.9.RELEASE.jar
spring-context-4.3.9.RELEASE.jar
spring-core-4.3.9.RELEASE.jar
spring-expression-4.3.9.RELEASE.jar
spring-jdbc-4.3.9.RELEASE.jar
spring-orm-4.3.9.RELEASE.jar
spring-tx-4.3.9.RELEASE.jar
spring-web-4.3.9.RELEASE.jar
spring-webmvc-4.3.9.RELEASE.jar

我的 dispatcher-servlet.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"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.3.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.3.xsd
http://www.springframework.org/schema/mvc 
http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd">

<mvc:annotation-driven /> 
<context:component-scan base-package="com.scm" />
<context:annotation-config />

<tx:annotation-driven transaction-manager="hibernateTransactionManager" /> 

<bean id="jspViewResolver"

class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="viewClass"
        value="org.springframework.web.servlet.view.JstlView" />
    <property name="prefix" value="WEB-INF/view/" />
    <property name="suffix" value=".jsp" />
</bean>

<bean id="dataSource"
    class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="org.postgresql.Driver" />
    <property name="url" value="jdbc:postgresql://localhost:5433/SCM1" />
    <property name="username" value="postgres" />
    <property name="password" value="postgres123"/>
</bean> 


<bean id="sessionFactory" 
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />    
    <property name="annotatedClasses">
        <list>
            <value>com.scm.Pojo.Req_Vcmd_Inter_Dist_Mas</value>
            <value>com.scm.Pojo.Req_Vcmd_Inter_Dist_Det</value>           
        </list>
    </property>     
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">
                org.hibernate.dialect.PostgreSQLDialect
            </prop>
            <prop key="hibernate.validator.apply_to_ddl">false</prop>
            <prop key="hibernate.validator.autoregister_listeners"> 
false</prop> 
              <prop key="hibernate.show_sql"> false   </prop> 

        </props>
    </property>
 </bean>

<bean id="hibernateTransactionManager" 
class="org.springframework.orm.hibernate4.HibernateTransactionManager" >
<property name="sessionFactory" ref="sessionFactory" />
</bean>

</beans>

我的服务实现类是

@Service
public class scmServiceImpl implements scmService {


@Autowired
private scmDao scmdao;

public scmDao getScmdao() {
    return scmdao;
}

public void setScmdao(scmDao scmdao) {
    this.scmdao = scmdao;
}

@Override
public List<Users> getUser(String username) {   
    return scmdao.getUser(username);
}
}

控制器是:

import com.scm.Beans.Users;
import com.scm.Service.scmService;


@Controller
public class myHomeController {

@Autowired
private scmService scm_service;

public scmService getScm_service() {
    return scm_service;
}

public void setScm_service(scmService scm_service) {
    this.scm_service = scm_service;
}


HttpSession session;

public HttpSession getSession() {
    return session;
}

public void setSession(HttpSession session) {
    this.session = session;
}

}

【问题讨论】:

    标签: spring spring-mvc


    【解决方案1】:

    信息很清楚:

    java.lang.NoClassDefFoundError: org/jboss/logging/BasicLogger
    

    您缺少jboss-logging.jar。我建议使用 Maven 或 Gradle 之类的依赖管理系统来避免此类错误。

    【讨论】:

    • 我已经添加了 jboss-logging-3.1.1.GA.jar,但是这次我得到了这个异常 Unsupported major.minor version 51.0 (unable to load class javax.transaction.SystemException
    • 那你的Java版本太旧了。你用的是哪个版本?
    • @BharathPateru 请使用相同的java版本编译的jar来解决Unsupported version错误
    • @SangamBelose,我认为jta-1.1.jar是我的问题,我已经搜索过,结果是jta-1.1.jar与java1.6不兼容,如果是,是哪个jar我应该使用吗?
    • 你正在使用 jta 1.2 你应该使用 jta 1.1 jar。是的,它是兼容的,不确定你从哪里得到不兼容的想法。
    【解决方案2】:

    访问此链接:https://start.spring.io 并创建您的基本应用程序,包括您必须需要的所有依赖项。

    【讨论】:

      猜你喜欢
      • 2013-10-19
      • 2017-12-18
      • 2015-04-17
      • 2016-11-16
      • 2023-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-17
      相关资源
      最近更新 更多