web-dev-qa-db-fra.com

Impossible de charger la classe de pilote: com.Microsoft.jdbc.sqlserver.SQLServerDriver

Je reçois une exception lors de l'exécution de mon application de démarrage printanière. Il est impossible de créer un bean de source de données. Cette exception est due à l'impossibilité de détecter mon DriverClass pour SQLServer.

Voici mon fichier application.properties:

spring.jpa.database-platform=org.hibernate.dialect.SQLServerDialect
spring.jpa.hibernate.ddl-auto=update
spring.datasource.driverClassName=com.Microsoft.jdbc.sqlserver.SQLServerDriver
spring.datasource.url=jdbc:sqlserver://localhost;databaseName=dbname
spring.datasource.username=name
spring.datasource.password=****

Je l'ai téléchargé le fichier jar du connecteur sqljdbc et l'ai placé dans le dossier lib et lui ai donné la référence dans mon fichier pom.xml.

    <?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 http://maven.Apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

<groupId>com.myproject</groupId>
<artifactId>myproject-notifications</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>netpace-notifications</name>
<description>Demo project for Spring Boot</description>

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.8.RELEASE</version>
    <relativePath /> <!-- lookup parent from repository -->
</parent>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <Java.version>1.8</Java.version>
</properties>

<dependencies>

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

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
            <groupId>org.Apache.commons</groupId>
            <artifactId>commons-dbcp2</artifactId>
            <version>2.1.1</version>

        </dependency>
        <dependency>
            <groupId>com.Microsoft.sqlserver</groupId>
            <artifactId>sqljdbc4</artifactId>
            <version>4.0</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/lib/sqljdbc4-2.0.jar</systemPath>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>


</project>

J'ai essayé d'utiliser ces balises:

<dependency>
        <groupId>com.Microsoft.sqlserver</groupId>
        <artifactId>sqljdbc4</artifactId>
        <version>4.0</version>
    </dependency>

Mais cela donne une erreur dans mon fichier pom.xml, ce qui explique pourquoi je dois utiliser l’autre approche. Je suis nouveau au printemps et je serais très reconnaissant si quelqu'un me faisait savoir ce que je faisais mal ici. Merci d'avance.

3
Farrukh Ahmed

Vous essayez de charger le mauvais pilote. Le pilote nommé com.Microsoft.jdbc.sqlserver.SQLServerDriver provient du très ancien pilote JDBC de SQL Server 2000.

Dans le pilote JDBC de SQL Server 2005, Microsoft a modifié ce paramètre en com.Microsoft.sqlserver.jdbc.SQLServerDriver (notez le changement d’ordre entre sqlserver et jdbc.

Remarque secondaire: vous utilisez une ancienne version du pilote. Microsoft a ouvert à l’origine le pilote JDBC de SQL Server et il est disponible sur maven en tant que:

<dependency>
    <groupId>com.Microsoft.sqlserver</groupId>
    <artifactId>mssql-jdbc</artifactId>
    <version>6.2.2.jre8</version>
</dependency>

Voir https://github.com/Microsoft/mssql-jdbc pour les dernières versions actuelles.

9
Mark Rotteveel

Le pot est-il présent sur votre système? Vous forcez maven à obtenir la dépendance du système et si ce n’est pas sur ce chemin, Maven échouera. Pouvez-vous remplacer le tag avec ceux-ci: 

<dependency>
    <groupId>com.Microsoft</groupId>
    <artifactId>sqljdbc4</artifactId>
    <version>3.0</version>
</dependency>

Source: https://mvnrepository.com/artifact/com.Microsoft/sqljdbc4/3.0

0
Dogukan Zengin