首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >由于找不到'javax.sql.DataSource‘,无法启动我的spring boot应用程序

由于找不到'javax.sql.DataSource‘,无法启动我的spring boot应用程序
EN

Stack Overflow用户
提问于 2017-08-14 23:45:59
回答 1查看 1.5K关注 0票数 0

我是spring boot的初学者,正在尝试编写一个简单的spring boot应用程序。我的文件夹结构如下:

代码语言:javascript
复制
  -> 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如下:

代码语言:javascript
复制
    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如下:

代码语言:javascript
复制
   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如下:

代码语言:javascript
复制
  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);
      };

  }

我能够成功地构建应用程序。如果我运行应用程序,我得到以下堆栈跟踪,无法启动应用程序:

代码语言:javascript
复制
     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.

我已经检查了依赖关系树,可以在其中找到hibernate和mysql连接器。我尝试过删除驱动程序,在这种情况下,我得到了Cannot load driver @EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class}):com.mysql.jdbc.Driver

EN

回答 1

Stack Overflow用户

发布于 2017-08-16 19:44:33

您应该将dto包移动到您的Main.java类包中,在您的示例中,它应该类似于src/main/java/package/dto

因此,当spring-boot扫描时,您的实体将对扫描仪可见。

确保已添加MySQL驱动程序依赖项

代码语言:javascript
复制
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.6</version>
</dependency>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45678285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档