2017-02-07 120 views
2

我有一个maven spring引导应用程序;它是惊人地工作时我从Eclipse中启动它,但是当我把它从命令行:Spring Boot异常,错误创建bean

1)MVN包

2)Java的罐子目标/ myapp.jar

是投掷错误:

11:34:48.418 [main] WARN o.s.b.c.e.AnnotationConfigEmbeddedWebApplicationContext - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [com/myapp/configuration/JpaConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean]: Factory method 'entityManagerFactory' threw exception; nested exception is java.lang.IllegalStateException: required key [datasource.sampleapp.hibernate.dialect] not found 
11:34:48.421 [main] INFO o.a.catalina.core.StandardService - Stopping service Tomcat 
11:34:48.436 [localhost-startStop-1] WARN o.a.c.loader.WebappClassLoaderBase - The web application [myapp] appears to have started a thread named [Abandoned connection cleanup thread] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread: 
java.lang.Object.wait(Native Method) 
java.lang.ref.ReferenceQueue.remove(Unknown Source) 
com.mysql.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:43) 
11:34:48.441 [main] WARN o.s.boot.SpringApplication - Error handling failed (Error creating bean with name 'delegatingApplicationListener' defined in class path resource [org/springframework/security/config/annotation/web/configuration/WebSecurityConfiguration.class]: BeanPostProcessor before instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration': Initialization of bean failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'org.springframework.context.annotation.ConfigurationClassPostProcessor.importRegistry' available) 
11:34:48.448 [main] ERROR o.s.boot.SpringApplication - Application startup failed 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [com/myapp/configuration/JpaConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean]: Factory method 'entityManagerFactory' threw exception; nested exception is java.lang.IllegalStateException: required key [datasource.sampleapp.hibernate.dialect] not found 

这里我的pom.xml虽然当我开始从Eclipse的应用程序工作正常,所以我不认为错误是在这里:

<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.myapp</groupId> 
    <artifactId>MyApp</artifactId> 
    <version>1.0.0</version> 
    <packaging>jar</packaging> 

    <name> MyApp </name> 

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

    <properties> 
     <java.version>1.8</java.version> 
     <h2.version>1.4.187</h2.version> 
    </properties> 

    <dependencies> 
     … 
    </dependencies> 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
        <configuration> 
        <archive> 
        <manifest> 
         <mainClass>com.playganizer.PlayganizerBackend</mainClass> 
        </manifest> 
        </archive> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

application.properties:

jdbc.driverClassName = com.mysql.jdbc.Driver 
jdbc.url = jdbc:mysql://localhost:3306/myapp 
jdbc.username = myuser 
jdbc.password = mypass 
hibernate.dialect = org.hibernate.dialect.MySQLDialect 
hibernate.show_sql = true 
hibernate.format_sql = true 

任何想法?

回答

1

更改配置,这一点,我认为它会工作:

# Connection url for the database "myapp" 
spring.datasource.url = jdbc:mysql://localhost:3306/myapp 
# Username and password 
spring.datasource.username = myuser 
spring.datasource.password = mypass 
# Show or not log for each sql query 
spring.jpa.show-sql = true 
spring.jpa.hibernate.ddl-auto = update 
# Naming strategy 
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy 
# Allows Hibernate to generate SQL optimized for a particular DBMS 
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect 

检查在你的pom.xml你有这些依赖关系:

 <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-data-jpa</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>mysql</groupId> 
      <artifactId>mysql-connector-java</artifactId> 
      <scope>runtime</scope> 
     </dependency> 
+0

嘿,感谢您的回答,对后我添加application.properties,它看起来是否正确? – mattobob

+0

我更新我的回应,希望为您工作! –

0

如果您再次读取日志,您会发现 java.lang.IllegalStateException: required key [datasource.sampleapp.hibernate.dialect] not found,您需要定义此属性来创建该bean。

相关问题