115 votes

Artéfact manquant com.microsoft.sqlserver:sqljdbc4:jar:4.0

Je cherche à ajouter la dépendance du pilote MS SQL dans mon fichier POM.xml et voici la dépendance :

    com.microsoft.sqlserver
    sqljdbc4
    4.0

mais je reçois cette exception

Artifact manquant com.microsoft.sqlserver:sqljdbc4:jar:4.0

Je ne comprends vraiment pas le problème.

167voto

DB5 Points 12336

MISE À JOUR

Microsoft fournit maintenant cet artefact dans Maven Central. Voir la réponse de @nirmal pour plus de détails : https://stackoverflow.com/a/41149866/1570834


RÉPONSE ORIGINALE

Le problème est que Maven ne peut pas trouver cet artefact dans l'un des dépôts maven configurés.

Malheureusement, Microsoft ne rend pas cet artefact disponible via un dépôt Maven. Vous devez télécharger le jar depuis le site de Microsoft, puis l'installer manuellement dans votre dépôt Maven local.

Vous pouvez le faire avec la commande Maven suivante :

mvn install:install-file -Dfile=sqljdbc4.jar -DgroupId=com.microsoft.sqlserver -DartifactId=sqljdbc4 -Dversion=4.0 -Dpackaging=jar

Ensuite, la prochaine fois que vous exécuterez Maven sur votre POM, il trouvera l'artefact.

86voto

nirmal Points 36

Microsoft a récemment publié en open source leur pilote jdbc.

Vous pouvez maintenant trouver le pilote sur maven central:

    com.microsoft.sqlserver
    mssql-jdbc
    6.1.0.jre8

ou pour java 7:

    com.microsoft.sqlserver
    mssql-jdbc
    6.1.0.jre7

30voto

programmer Points 492

J'ai eu le même problème et je l'ai résolu en faisant ce qui suit.

  • Téléchargez sqljdbc4.jar depuis le site web de Microsoft sur votre machine locale.

  • Cliquez avec le bouton droit sur Projet-->Importer-->Maven-->Installer ou déployer un artefact dans un dépôt Maven comme indiqué ci-dessous.

entrer la description de l'image ici

* Suivant-->Remplissez les détails suivants

Fichier Artefact : chemin du jar que vous avez téléchargé (Ex : E:\lib\sqljdbc4.jar dans mon cas)
Group Id : com.microsoft.sqlserver
Artifact Id : sqljdbc4
Version : 4.0

entrer la description de l'image ici

  • Ensuite, actualisez/nettoyez le projet.

    Merci!

12voto

Václav Kužel Points 740

Vous pouvez également créer un référentiel de projet. C'est utile si plusieurs développeurs travaillent sur le même projet, et la bibliothèque doit être incluse dans le projet.

  • Tout d'abord, créez une structure de répertoire dans le répertoire lib de votre projet, puis copiez la bibliothèque dedans. La bibliothèque doit avoir le format de nom suivant : -.jar

    /lib/com/microsoft/sqlserver///

  • Créez un fichier pom à côté du fichier de la bibliothèque, et mettez les informations suivantes dedans:

         4.2.0
         com.microsoft.sqlserver
         sqljdbc4
         4.2
  • À ce stade, vous devriez avoir cette structure de répertoire :

    /lib/com/microsoft/sqlserver/sqljdbc4/4.2/sqljdbc4-4.2.jar /lib/com/microsoft/sqlserver/sqljdbc4/4.2/sqljdbc4-4.2.pom

  • Allez dans le fichier pom de votre projet et ajoutez un nouveau référentiel :

             Référentiel du projet
             file://${basedir}/lib
  • Enfin, ajoutez une dépendance à la bibliothèque :

             com.microsoft.sqlserver
             sqljdbc4
             4.2

Mise à jour 2017-03-04

Il semble que la bibliothèque puisse être obtenue à partir d'un référentiel disponible publiquement. Consultez les réponses de nirmal's et Jacek Grzelaczyk pour plus de détails.

Mise à jour 2020-11-04

Actuellement, Maven dispose d'une cible pratique install qui vous permet de déployer un package existant dans un référentiel de projet / fichier sans avoir besoin de créer manuellement des fichiers POM. Il générera ces fichiers pour vous.

mvn install:install-file \
    -Dfile=sqljdbc4.jar \
    -DgroupId=com.microsoft.sqlserver \
    -DartifactId=sqljdbc4 \
    -Dversion=4.2 \
    -Dpackaging=jar \
    -DlocalRepositoryPath=${your_project_dir}/lib

11voto

Nelda.techspiress Points 413

La réponse ci-dessus ne fait qu'ajouter le sqljdbc4.jar au référentiel local. En conséquence, lors de la création du jar de projet final pour la distribution, sqljdbc4 manquera à nouveau comme l'indiquait le commentaire de @Tony concernant l'erreur d'exécution.

Microsoft (et Oracle et d'autres fournisseurs tiers) restreignent la distribution de leurs logiciels selon l'ENU/EULA. Par conséquent, ces modules logiciels ne sont pas ajoutés dans les jars produits par Maven pour la distribution. Il existe des astuces pour contourner cela (comme fournir l'emplacement du fichier jar tiers au moment de l'exécution), mais en tant que développeur, vous devez être prudent pour ne pas enfreindre la licence.

Une meilleure approche pour les connecteurs/pilotes jdbc est d'utiliser jTDS, qui est compatible avec la plupart des SGBD, plus fiable, plus rapide (selon les benchmarks), et distribué sous licence GNU. Il vous sera beaucoup plus facile d'utiliser cela que d'essayer d'ajuster un carré dans un cercle en utilisant l'une des autres techniques ci-dessus.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X