2016-12-02 79 views
1

我是Spring Boot中的新成員。我嘗試MySQL數據庫與Hibernate連接,但我得到這個錯誤,當我命令Spring Boot - org.springframework.beans.factory.BeanCreationException:創建名稱爲bean的錯誤

MVN春季啓動:運行

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [com/autkusoytas/configuration/DatabaseConfig.class]: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: org/dom4j/DocumentException 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476) 
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303) 
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) 
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299) 
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:736) 
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757) 
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480) 
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118) 
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:686) 
at org.springframework.boot.SpringApplication.run(SpringApplication.java:320) 
at org.springframework.boot.SpringApplication.run(SpringApplication.java:957) 
at org.springframework.boot.SpringApplication.run(SpringApplication.java:946) 

Caused by: java.lang.NoClassDefFoundError: org/dom4j/DocumentException 
    at org.springframework.orm.hibernate4.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:343) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1633) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1570) 
    ... 15 common frames omitted 
Caused by: java.lang.ClassNotFoundException: org.dom4j.DocumentException 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    ... 18 common frames omitted 

我的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.autkusoytas</groupId> 
<artifactId>Demo</artifactId> 
<version>0.0.1-SNAPSHOT</version> 
<packaging>war</packaging> 

<name>Iyzico</name> 
<description>Demo project for Spring Boot</description> 

<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.2.3.RELEASE</version> 
</parent> 

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 
    <java.version>1.8</java.version> 
</properties> 

<dependencies> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-data-jpa</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>mysql</groupId> 
     <artifactId>mysql-connector-java</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-thymeleaf</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>dom4j</groupId> 
     <artifactId>dom4j</artifactId> 
     <version>1.6.1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-tomcat</artifactId> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-test</artifactId> 
     <scope>test</scope> 
    </dependency> 
</dependencies> 

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-maven-plugin</artifactId> 
     </plugin> 
    </plugins> 
</build> 

And DatabaseConfig is here:

package com.autkusoytas.configuration; 

import java.util.Properties; 

import javax.sql.DataSource; 

import org.springframework.beans.factory.annotation.Value; 
import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.jdbc.datasource.DriverManagerDataSource; 
import org.springframework.orm.hibernate4.LocalSessionFactoryBean; 
import org.springframework.orm.hibernate4.HibernateTransactionManager; 
import org.springframework.transaction.annotation.EnableTransactionManagement; 

@Configuration 
@EnableTransactionManagement 
public class DatabaseConfig { 

@Value("${db.driver}") 
private String DB_DRIVER; 

@Value("${db.password}") 
private String DB_PASSWORD; 

@Value("${db.url}") 
private String DB_URL; 

@Value("${db.username}") 
private String DB_USERNAME; 

@Value("${hibernate.dialect}") 
private String HIBERNATE_DIALECT; 

@Value("${hibernate.show_sql}") 
private String HIBERNATE_SHOW_SQL; 

@Value("${hibernate.hbm2ddl.auto}") 
private String HIBERNATE_HBM2DDL_AUTO; 

@Value("${entitymanager.packagesToScan}") 
private String ENTITYMANAGER_PACKAGES_TO_SCAN; 

@Bean 
public DataSource dataSource() { 
    DriverManagerDataSource dataSource = new DriverManagerDataSource(); 
    dataSource.setDriverClassName(DB_DRIVER); 
    dataSource.setUrl(DB_URL); 
    dataSource.setUsername(DB_USERNAME); 
    dataSource.setPassword(DB_PASSWORD); 
    return dataSource; 
} 

@Bean 
public LocalSessionFactoryBean sessionFactory() { 
    LocalSessionFactoryBean sessionFactoryBean = new LocalSessionFactoryBean(); 
    sessionFactoryBean.setDataSource(dataSource()); 
    sessionFactoryBean.setPackagesToScan(ENTITYMANAGER_PACKAGES_TO_SCAN); 
    Properties hibernateProperties = new Properties(); 
    hibernateProperties.put("hibernate.dialect", HIBERNATE_DIALECT); 
    hibernateProperties.put("hibernate.show_sql", HIBERNATE_SHOW_SQL); 
    hibernateProperties.put("hibernate.hbm2ddl.auto", HIBERNATE_HBM2DDL_AUTO); 
    sessionFactoryBean.setHibernateProperties(hibernateProperties); 

    return sessionFactoryBean; 
} 

@Bean 
public HibernateTransactionManager transactionManager() { 
    HibernateTransactionManager transactionManager = new HibernateTransactionManager(); 
    transactionManager.setSessionFactory(sessionFactory().getObject()); 
    return transactionManager; 
} 

} // class DatabaseConfig 

而且也是我使用application.properties這樣的:

db.driver:com.mysql.jdbc.Driver
db.url配置參數爲:jdbc:mysql的://本地主機:3306 /測試
db.username:根
db.password:

hibernate.dialect:org.hibernate.dialect.MySQL5Dialect
hibernate.show_sql:真
hibernate.hbm2ddl.auto:更新
entitymanager.packagesToScan:com.autkusoytas

WEB-INF/lib目錄下: enter image description here 感謝您的幫助。

+0

要解決像ClassNotFoundException和NoClassDefFoundError這樣的問題,您應該先查看異常堆棧。它清楚地表明你錯過了一些圖書館。 –

+0

我已經嘗試添加dom4j庫,但它沒有工作。 –

+0

@ Utku好吧,但要確保它在課程路徑中。我無法在您的pom.xml文件中看到dom4j依賴關係 –

回答

0

的錯誤信息是非常明確的:Caused by: java.lang.ClassNotFoundException: org.dom4j.DocumentException

在POM依賴,加入dom4j

<dependency> 
    <groupId>dom4j</groupId> 
    <artifactId>dom4j</artifactId> 
    <version>1.6.1</version> 
</dependency> 
+0

我已經做到了,但沒有奏效。 –

相關問題