简体   繁体   中英

Spring Boot Hikari can't find DriverClassName

I have a spring boot project,It run just fine when I execute via eclipse Project > Run as > spring boot app

but when I build the project and execute it using java -jar myproject.jar or run it using mvn spring-boot:run it throw this error

Failed to bind properties under '' to com.zaxxer.hikari.HikariDataSource:

Property: driverclassname
Value: com.microsoft.sqlserver.jdbc.SQLServerDriver
Origin: "driverClassName" from property source "source"
Reason: Failed to load driver class com.microsoft.sqlserver.jdbc
.SQLServerDriver in either of HikariConfig class loader or Thread context classloader

Action:

Update your application's configuration

my sql server connector dependency

<dependency>
        <groupId>com.microsoft.sqlserver</groupId>
        <artifactId>mssql-jdbc</artifactId>
        <version>6.4.0.jre8</version>
        <scope>test</scope>
</dependency>

and here my application.properties

spring.datasource.url=jdbc:sqlserver://mydb;databaseName=HTSdb
spring.datasource.username=xxx
spring.datasource.password=xxx
spring.jpa.show-sql=true
spring.jpa.hibernate.dialect=org.hibernate.dialect.SQLServer2012Dialect

it looks my app can't find the sqlserver driver but it is already in project classpath,any suggestion? thanks in advance

I think the issue is with dependency scope which is set as test .

Scope test indicates that dependency isn't required at standard runtime of application and should only be used for purpose of test runs only!

Usually database connectors dependency are set with runtime scope.

 <dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>mssql-jdbc</artifactId>
    <version>6.4.0.jre8</version>
    <scope>runtime</scope>
 </dependency>
Failed to bind properties under '' to com.zaxxer.hikari.HikariDataSource:

Property: driver-class-name
Value: org.postgresql.Driver 
Origin: "driverClassName" from property source "source"
Reason: Failed to load driver class org.postgresql.Driver  in either of HikariConfig 
class loader or Thread context classloader

Action:

Update your application's configuration

Just had the same error, in my case with "org.postgresql.Driver". Gues what was the issue? an empty space after "org.postgresql.Driver " by mistake.

So, be aware about that ' ' invisible empty space :).

Add dependency

  <dependency>
            <groupId>com.microsoft.sqlserver</groupId>
            <artifactId>mssql-jdbc</artifactId>
        </dependency>

check if Jar is loaded in lib if not then you need to add version 8.2.1.jre8 and rebuild the project . You can validate by checking if mssql-jdbc-8.2.1.jre8 jar is there loaded in project and it has SQLServerDriver.class file in it .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM