添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
  • mapper 4.1.5
  • mysql-connector-java 5.1.48
  • 写完testController后,mvn clean install内的test报错,内容是找不到 com.mysql.cj.jdbc.Driver
    但我的版本及配置多次检查后,没有写过任何com.mysql.cj.jdbc.Driver的信息,这是为何呢。。。

    您好,我这边试了很久,一直没有能够复现:

    依赖:

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
        <version>5.1.47</version>
    </dependency>

    配置:

    spring:
      datasource:
        url: jdbc:mysql://localhost:3306/user_center?useUnicode=true&characterEncoding=utf8&useSSL=false
        username: root
        password: root123
        driver-class-name: com.mysql.jdbc.Driver

    能否帮忙把代码托管到GitHub或者Gitee,我来看看哈。


    另外,不建议用Spring Boot 2.2版本进行测试。原因有2:

    1. 2.2.0版本和课上的2.1.5版本有一定差异,容易采坑。不说别的,数据源的配置就不一样哈

    2. Spring Cloud Alibaba和Spring Boot有一定的版本映射关系,在4-2节有详解。目前即使最新的Spring Cloud Alibaba 2.1.0,也只支持Spring Boot 2.1.x

    建议严格按照课上选择的版本玩哦,在最近(双十一之前),课程就会更新到最新的版本,并且未来也会持续更新。帮助大家避免采坑的哈。


    我下载了hikari的sourceCode,从配置到报错逐层debug,貌似某一层级是根据com.mysql.cj.jdbc.Driver 这个格式去取配置的,配置的com.mysql.jdbc.Driver没有生效。我本地以及平时用mysql5.7比较多,故而为了后面考虑想使用5.7,查看了connector的best practice,貌似8.x是为了兼容mysql的8.x,推荐5.7mysql使用的依旧是5.1.x的connector
    2019-10-29
    共2条回复
    [ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 1.861 s <<< FAILURE! - in com.yaopig.usercenter.UserCenterApplicationTests
    [ERROR] contextLoads  Time elapsed: 0.001 s  <<< ERROR!
    java.lang.IllegalStateException: Failed to load ApplicationContext
    Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'testController': Unsatisfied dependency expressed through field 'userMapper'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userMapper' defined in file [/private/var/www/http/user-center/target/classes/com/yaopig/usercenter/dao/user/UserMapper.class]: Unsatisfied dependency expressed through bean property 'sqlSessionFactory'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [tk/mybatis/mapper/autoconfigure/MapperAutoConfiguration.class]: Unsatisfied dependency expressed through method 'sqlSessionFactory' parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method 'dataSource' threw exception; nested exception is org.springframework.boot.context.properties.bind.BindException: Failed to bind properties under '' to com.zaxxer.hikari.HikariDataSource
    Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userMapper' defined in file [/private/var/www/http/user-center/target/classes/com/yaopig/usercenter/dao/user/UserMapper.class]: Unsatisfied dependency expressed through bean property 'sqlSessionFactory'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [tk/mybatis/mapper/autoconfigure/MapperAutoConfiguration.class]: Unsatisfied dependency expressed through method 'sqlSessionFactory' parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method 'dataSource' threw exception; nested exception is org.springframework.boot.context.properties.bind.BindException: Failed to bind properties under '' to com.zaxxer.hikari.HikariDataSource
    Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [tk/mybatis/mapper/autoconfigure/MapperAutoConfiguration.class]: Unsatisfied dependency expressed through method 'sqlSessionFactory' parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method 'dataSource' threw exception; nested exception is org.springframework.boot.context.properties.bind.BindException: Failed to bind properties under '' to com.zaxxer.hikari.HikariDataSource
    Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method 'dataSource' threw exception; nested exception is org.springframework.boot.context.properties.bind.BindException: Failed to bind properties under '' to com.zaxxer.hikari.HikariDataSource
    Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method 'dataSource' threw exception; nested exception is org.springframework.boot.context.properties.bind.BindException: Failed to bind properties under '' to com.zaxxer.hikari.HikariDataSource
    Caused by: org.springframework.boot.context.properties.bind.BindException: Failed to bind properties under '' to com.zaxxer.hikari.HikariDataSource
    Caused by: java.lang.IllegalStateException: Unable to set value for property driver-class-name
    Caused by: java.lang.reflect.InvocationTargetException
    Caused by: java.lang.RuntimeException: Failed to load driver class com.mysql.cj.jdbc.Driver in either of HikariConfig class loader or Thread context classloader


    spring:
      datasource:
        url: jdbc:mysql://localhost:3306/user_center?useUnicode=true&characterEncoding=utf8&useSSL=false
        username: 123
        password: 123
        driver-class-name: com.mysql.jdbc.Driver
    #    hikari:
    #      username: 123
    #      password: 123
    #      # >= 6.x com.mysql.cj.jdbc.Driver
    #      # <= 5.x com.mysql.jdbc.Driver
    #      driver-class-name: com.mysql.jdbc.Driver

    替换调hikari后可以通过了。。难道是版本问题,5xx没有cj的不可以用hikari?

    spring:
      datasource:
        url: jdbc:mysql://localhost:3306/user_center?useUnicode=true&characterEncoding=utf8&useSSL=false
        hikari:
          username: 123
          password: 123
          # >= 6.x com.mysql.cj.jdbc.Driver
          # <= 5.x com.mysql.jdbc.Driver
          driver-class-name: com.mysql.jdbc.Driver


    <?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.2.0.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.yaopig</groupId>
        <artifactId>user-center</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>user-center</name>
        <description>aaa user-center</description>
        <properties>
            <java.version>1.8</java.version>
        </properties>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>tk.mybatis</groupId>
                <artifactId>mapper-spring-boot-starter</artifactId>
                <version>2.1.5</version>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.48</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
                <exclusions>
                    <exclusion>
                        <groupId>org.junit.vintage</groupId>
                        <artifactId>junit-vintage-engine</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
        </dependencies>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
                <plugin>
                    <groupId>org.mybatis.generator</groupId>
                    <artifactId>mybatis-generator-maven-plugin</artifactId>
                    <version>1.3.6</version>
                    <configuration>
                        <configurationFile>
                            ${basedir}/src/main/resources/generator/generatorConfig.xml
                        </configurationFile>
                        <overwrite>true</overwrite>
                        <verbose>true</verbose>
                    </configuration>
                    <dependencies>
                        <dependency>
                            <groupId>mysql</groupId>
                            <artifactId>mysql-connector-java</artifactId>
                            <version>5.1.48</version>
                        </dependency>
                        <dependency>
                            <groupId>tk.mybatis</groupId>
                            <artifactId>mapper</artifactId>
                            <version>4.1.5</version>
                        </dependency>
                    </dependencies>
                </plugin>
            </plugins>
        </build>
    </project>