2016-11-10 6 views
4

私はJava Springでとても新しいです。私はチュートリアルに従っていましたが、解決できなかった問題に直面しました。 「org.springframework.beans.factory.BeanCreationException:「homeController」という名前のBeanを作成中にエラーが発生しました:autowired依存関係の注入が失敗しました;ネストされた例外はjava.lang.NoClassDefFoundError:org/hibernate/cfg/Configuration "エラーです。私はアプリケーションを実行しようとしました。autowired依存関係の注入に失敗しました。ネストされた例外はjava.lang.NoClassDefFoundErrorです:org/hibernate/cfg/Configuration

コードスニペットを共有する前に、似たような質問が見つかったことをお知らせしたいと思います(例えば[Caused by: java.lang.NoClassDefFoundError: org/hibernate/cfg/Configuration])。自分の質問に答えが見つかりませんでした。ビルドパスを設定する必要があると答えたが、すべての答えはEclipseのためだけである。私はintelliJのアイデアを使用しており、intelliJ上で私の解決策を修正するための何かを見つけることができませんでした。だから私はこの質問があなたに私に問題の根本的な原因を教えてくれることをもっと明確にすることを願っています。

のpom.xml

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 

<groupId>com.mywebsite</groupId> 
<artifactId>emusicstore</artifactId> 
<version>1.0-SNAPSHOT</version> 

<dependencies> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>4.3.3.RELEASE</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-core</artifactId> 
     <version>4.3.3.RELEASE</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-orm</artifactId> 
     <version>4.3.3.RELEASE</version> 
    </dependency> 

    <dependency> 
     <groupId>jstl</groupId> 
     <artifactId>jstl</artifactId> 
     <version>1.2</version> 
    </dependency> 

    <dependency> 
     <groupId>taglibs</groupId> 
     <artifactId>standard</artifactId> 
     <version>1.1.2</version> 
    </dependency> 

    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>5.2.4.Final</version> 
    </dependency> 

    <dependency> 
     <groupId>org.hibernate.javax.persistance</groupId> 
     <artifactId>hibernate-jpa-2.0-api</artifactId> 
     <version>1.0.1.Final</version> 
    </dependency> 

    <dependency> 
     <groupId>com.h2database</groupId> 
     <artifactId>h2</artifactId> 
     <version>1.4.193</version> 
    </dependency> 
</dependencies> 

applicationContext.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" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> 

<!-- Creating Database Connection here --> 
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName" value="org.h2.Driver"/> 
    <property name="url" value=" jdbc:h2:~/test" /> 
    <property name="username" value="sa" /> 
    <property name="password" value="" /> 
</bean> 

<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
    <property name="dataSource" ref="dataSource"></property> 
    <property name="hibernateProperties"> 
     <props> 
      <prop key="hibernate.dialect">org.hibernate.dialect.H2Dialect</prop> 
      <prop key="hibernate.hbm2ddl.auto">update</prop> 
      <prop key="hibernate.show_sql">true</prop> 
      <prop key="hibernate.format_sql">true</prop> 
     </props> 
    </property> 
    <property name="packagesToScan"> 
     <list> 
      <value>com.emusicstore</value> 
     </list> 
    </property> 
</bean> 

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

web.xmlの

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 
    version="3.1"> 

<listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 
<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value> 
     /WEB-INF/dispatcher-servlet.xml, 
     /WEB-INF/applicationContext.xml 
    </param-value> 
</context-param> 
<servlet> 
    <servlet-name>dispatcher</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>dispatcher</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 

dispatcherServlet.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:mvc="http://www.springframework.org/schema/mvc" 

    xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" 
    xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd 
       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> 

<context:component-scan base-package="com.emusicstore" /> 

<mvc:annotation-driven /> 

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

<mvc:resources mapping="/resources/**" location="/WEB-INF/resources/" /> 

<tx:annotation-driven/> 

にHomeController

package com.emusicstore.controller; 

import com.emusicstore.dao.ProductDao; 
import com.emusicstore.model.Product; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Controller; 
import org.springframework.ui.Model; 
import org.springframework.web.bind.annotation.PathVariable; 
import org.springframework.web.bind.annotation.RequestMapping; 

import java.io.IOException; 
import java.util.List; 

@Controller 
public class HomeController { 

@Autowired 
private ProductDao productDao; 

@RequestMapping("/") 
public String home() { 
    return "home"; 
} 

@RequestMapping("/productList") 
public String getProducts(Model model) { 
    List<Product> products = productDao.getAllProducts(); 
    model.addAttribute("products", products); 

    return "productList"; 
} 

@RequestMapping("/productList/viewProduct/{productId}") 
public String viewProduct(@PathVariable String productId, Model model) throws IOException{ 

    Product product = productDao.getProductById(productId); 
    model.addAttribute(product); 

    return "viewProduct"; 
} 
} 

ProductDaoImpl

package com.emusicstore.dao.Impl; 

import com.emusicstore.dao.ProductDao; 
import com.emusicstore.model.Product; 
import org.hibernate.Session; 
import org.hibernate.SessionFactory; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Repository; 

import org.hibernate.Query; 
import org.springframework.transaction.annotation.Transactional; 

import java.util.List; 

@Repository 
@Transactional 
public class ProductDaoImpl implements ProductDao { 

@Autowired 
private SessionFactory sessionFactory; 

public void addProduct(Product product) { 
    Session session = sessionFactory.getCurrentSession(); 
    session.saveOrUpdate(product); 
    session.flush(); 
} 


public Product getProductById(String id){ 
    Session session = sessionFactory.getCurrentSession(); 
    Product product = (Product) session.get(Product.class, id); 
    session.flush(); 

    return product; 
} 

public List<Product> getAllProducts(){ 
    Session session = sessionFactory.getCurrentSession(); 
    Query query = session.createQuery("from Product"); 
    List<Product> products = query.list(); 
    session.flush(); 

    return products; 
} 

public void deleteProduct(String id) { 
    Session session = sessionFactory.getCurrentSession(); 
    session.delete(getProductById(id)); 
    session.flush(); 
} 
} 

ProductDao

package com.emusicstore.dao; 

import com.emusicstore.model.Product; 

import java.util.List; 

public interface ProductDao { 

void addProduct(Product product); 

Product getProductById(String id); 

List<Product> getAllProducts(); 

void deleteProduct(String id); 


} 

私が得たエラーは以下のようなものです:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'homeController': Injection of autowired dependencies failed; nested exception is java.lang.NoClassDefFoundError: org/hibernate/cfg/Configuration 
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:355) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1219) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) 
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) 
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) 
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) 
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:751) 
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:861) 
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:541) 
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:444) 
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:326) 
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107) 
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4715) 
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5177) 
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:152) 
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:724) 
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:700) 
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734) 
at org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1702) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:497) 
at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:300) 
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819) 
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801) 
at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:482) 
at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:431) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:497) 
at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:300) 
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819) 
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801) 
at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1471) 
at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:76) 
at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1312) 
at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1404) 
at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:832) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:497) 
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:323) 
at sun.rmi.transport.Transport$1.run(Transport.java:200) 
at sun.rmi.transport.Transport$1.run(Transport.java:197) 
at java.security.AccessController.doPrivileged(Native Method) 
at sun.rmi.transport.Transport.serviceCall(Transport.java:196) 
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568) 
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826) 
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$256(TCPTransport.java:683) 
at java.security.AccessController.doPrivileged(Native Method) 
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at java.lang.Thread.run(Thread.java:745) 
Caused by: java.lang.NoClassDefFoundError: org/hibernate/cfg/Configuration 
at java.lang.Class.getDeclaredMethods0(Native Method) 
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701) 
at java.lang.Class.getDeclaredMethods(Class.java:1975) 
at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:612) 
at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:524) 
at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:510) 
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors(AutowiredAnnotationBeanPostProcessor.java:243) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineConstructorsFromBeanPostProcessors(AbstractAutowireCapableBeanFactory.java:1074) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1047) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getSingletonFactoryBeanForTypeCheck(AbstractAutowireCapableBeanFactory.java:870) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getTypeForFactoryBean(AbstractAutowireCapableBeanFactory.java:797) 
at org.springframework.beans.factory.support.AbstractBeanFactory.isTypeMatch(AbstractBeanFactory.java:544) 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doGetBeanNamesForType(DefaultListableBeanFactory.java:422) 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(DefaultListableBeanFactory.java:398) 
at org.springframework.beans.factory.BeanFactoryUtils.beanNamesForTypeIncludingAncestors(BeanFactoryUtils.java:220) 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1240) 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1091) 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1056) 
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:566) 
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88) 
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:349) 
... 58 more 
Caused by: java.lang.ClassNotFoundException: org.hibernate.cfg.Configuration 
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1280) 
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1114) 
... 79 more 

すべてのヘルプは大歓迎されます。

+2

あなたは 'hibernate5'を使用していますが、あなたのコードでは' hibernate4'クラスを使用しています。それは明らかに仕事/マッチに行くつもりはありません。 –

答えて

2

私はそれがハイバーネイトコアジャーについてだと思います。

<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-core</artifactId> 
    <version>4.0.0.Final</version> 
</dependency> 
+0

ありがとう!バージョンの問題が私の問題だったように見えます。 – Prometheus

+0

私はまったく同じ問題を抱えています。しかし、私の春バージョンはまだ低いです(4.0.2)、私は休止状態5.0.10を使用します。しかし、@Prometheusによると、私はちょうどハイバネートコアだけを4.0.0に変更しました。それは今私のために働かなかった。私はこのバージョンに懐疑的な全体を変更する必要がありますか? – Jess

+0

私は休止状態のバージョン全体を変更しましたが、それはまだ同じエラーを投げます。 – Jess

関連する問題