2017-08-14 332 views
0

我是一名初學者,在春季啓動時嘗試編寫一個簡單的彈簧啓動應用程序。 我的文件夾結構如下:由於無法找到'javax.sql.DataSource'而無法啓動我的彈簧啓動應用程序

-> Project 

     -> build.gradle 

     -> settings.gradle 

     -> src/main/java 

      -> package 

       -> Main.java 

       -> UserController.java 

       -> UserRespository.java 

      -> dto 

       -> User.java 

     ->src/main/resouces 

       -> application.properties 

我的build.gradle如下:

buildscript { 
      repositories { 
          jcenter() 
         } 
    dependencies { 
      classpath(
        'org.springframework.boot:spring-boot-gradle- plugin:1.5.6.RELEASE' 

        ) 
      classpath('mysql:mysql-connector-java:5.1.34') 
       } 
      } 

    apply plugin: 'java' 
    apply plugin: 'spring-boot' 

    sourceCompatibility = 1.8 
    targetCompatibility = 1.8 

    repositories { 
       mavenCentral() 
       } 

    dependencies { 
     compile(
       'org.springframework.boot:spring-boot-starter-actuator', 
       'org.springframework.boot:spring-boot-starter-web', 
       'org.springframework.boot:spring-boot-starter-data-jpa'  
       ) 
     compile('mysql:mysql-connector-java') 
     testCompile('org.springframework.boot:spring-boot-starter-test') 
       } 

的application.properties如下:

spring.jpa.hibernate.ddl-auto=create 
    spring.datasource.url=jdbc:mysql://localhost:3306/user 
    spring.datasource.username=root 
    spring.datasource.password=root 
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver 
    spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect 
    spring.jpa.database=MYSQL 
    spring.jpa.show-sql = true 

我Main.java是如下: -

import org.springframework.boot.SpringApplication; 
    import org.springframework.boot.autoconfigure.EnableAutoConfiguration; 
    import org.springframework.boot.autoconfigure.SpringBootApplication; 
    import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; 

    @SpringBootApplication 
    @EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class}) 
    public class Main { 

      public static void main(String[] args) { 
        SpringApplication.run(Main.class, args); 
     }; 

    } 

我能夠成功構建應用程序。如果我運行應用程序,我得到無法用下面的堆棧跟蹤啓動應用程序:

 2017-08-14 20:43:02.976 WARN 27205 --- [   main] ationConfigEmbeddedWebApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration': Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'javax.sql.DataSource' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {} 
    2017-08-14 20:43:02.978 INFO 27205 --- [   main] o.apache.catalina.core.StandardService : Stopping service [Tomcat] 
    2017-08-14 20:43:03.007 INFO 27205 --- [   main] utoConfigurationReportLoggingInitializer : 

    Error starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enabled. 
    2017-08-14 20:43:03.198 ERROR 27205 --- [   main]   o.s.b.d.LoggingFailureAnalysisReporter : 

    *************************** 
    APPLICATION FAILED TO START 
    *************************** 

    Description: 

    Parameter 0 of constructor in org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration required a bean of type 'javax.sql.Data Source' that could not be found. 
     - Bean method 'dataSource' not loaded because @ConditionalOnProperty (spring.datasource.jndi-name) did not find property 'jndi-name' 
     - Bean method 'dataSource' not loaded because @ConditionalOnBean (types: org.springframework.boot.jta.XADataSourceWrapper; SearchStrategy: all) did not find any beans 


    Action: 

     Consider revisiting the conditions above or defining a bean of type 'javax.sql.DataSource' in your configuration. 

我檢查了依賴關係樹,可以找到既冬眠,以及在它的MySQL連接器。 曾試圖消除@EnableAutoConfiguration(排除= {} DataSourceAutoConfiguration.class),在這種情況下,我得到無法加載驅動程序類:com.mysql.jdbc.Driver

+0

爲什麼你排除DataSourceAutoConfiguration? –

+0

我正在瀏覽所有現有的答案,我們正在嘗試。已刪除排除,但無法加載驅動程序的mysql – Echo

+0

我認爲問題是在驅動程序依賴.can你可以共享代碼在github? –

回答

0

你應該內移動dto包到您的Main.java類包,在你的情況下,它應該像src/main/java/package/dto

因此,當春季啓動掃描,您的實體將可見的掃描儀。

確保您已經添加了MySQL驅動依賴

<dependency> 
    <groupId>mysql</groupId> 
    <artifactId>mysql-connector-java</artifactId> 
    <version>5.1.6</version> 
</dependency> 
相關問題