webentwicklung-frage-antwort-db.com.de

Fehlendes Artefakt com.Microsoft.sqlserver: sqljdbc4: jar: 4.0

Ich versuche, MS SQL-Treiberabhängigkeit in meiner POM.xml-Datei hinzuzufügen, und das Folgende ist die Abhängigkeit.

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

aber ich bekomme diese ausnahme

Fehlendes Artefakt com.Microsoft.sqlserver: sqljdbc4: jar: 4.0

Ich verstehe das Problem wirklich nicht.

96
SAR

[~ # ~] Update [~ # ~]

Microsoft stellt dieses Artefakt jetzt in Maven Central zur Verfügung. Weitere Informationen finden Sie in der Antwort von @ nirmal: https://stackoverflow.com/a/41149866/1570834


ORIGINAL ANTWORT

Das Problem ist, dass Maven dieses Artefakt in keinem der konfigurierten Maven-Repositorys finden kann.

Leider stellt Microsoft dieses Artefakt nicht über ein Maven-Repository zur Verfügung. Sie müssen die JAR-Datei von der Microsoft-Website herunterladen und dann manuell in Ihr lokales Maven-Repository installieren.

Sie können dies mit dem folgenden Befehl maven tun:

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

Wenn Sie dann das nächste Mal maven auf Ihrem POM ausführen, wird das Artefakt gefunden.

154
DB5

Microsoft vor kurzem Open-Source-JDBC-Treiber .

Sie finden den Treiber jetzt auf maven central:

<!-- https://mvnrepository.com/artifact/com.Microsoft.sqlserver/mssql-jdbc -->
<dependency>
    <groupId>com.Microsoft.sqlserver</groupId>
    <artifactId>mssql-jdbc</artifactId>
    <version>6.1.0.jre8</version>
</dependency>

oder für Java 7:

<!-- https://mvnrepository.com/artifact/com.Microsoft.sqlserver/mssql-jdbc -->
<dependency>
    <groupId>com.Microsoft.sqlserver</groupId>
    <artifactId>mssql-jdbc</artifactId>
    <version>6.1.0.jre7</version>
</dependency>
62
nirmal

Ich hatte das ähnliche Problem und löste es folgendermaßen.

  • Laden Sie sqljdbc4.jar von der Microsoft-Website auf Ihren lokalen Computer herunter.
  • Klicken Sie mit der rechten Maustaste auf Projekt -> Importieren -> Maven -> Installieren Sie ein Artefakt oder stellen Sie es in einem Maven-Repository bereit (siehe unten).

enter image description here

* Weiter -> Geben Sie die folgenden Details ein

Artifact file: Pfad des heruntergeladenen JAR (Beispiel: E:\lib\sqljdbc4.jar in meinem Fall)
Group Id: com.Microsoft.sqlserver
Artifact Id: sqljdbc4
Version: 4.0

enter image description here

  • Dann aktualisieren/bereinigen Sie das Projekt.

    Danke!
25
programmer

Die obige Antwort fügt nur die Datei sqljdbc4.jar zum lokalen Repository hinzu. Infolgedessen fehlt beim Erstellen des endgültigen Projekt-JARs für die Verteilung erneut sqljdbc4, wie im Kommentar von @Tony zu Laufzeitfehlern angegeben.

Microsoft (und Oracle und andere Drittanbieter) beschränken die Verteilung ihrer Software gemäß ENU/EULA. Daher werden diese Softwaremodule nicht in von Maven produzierten Gläsern zur Verteilung hinzugefügt. Es gibt Hacks, um das Problem zu umgehen (z. B. die Angabe des Speicherorts der JAR-Datei eines Drittanbieters zur Laufzeit). Als Entwickler müssen Sie jedoch vorsichtig sein, wenn Sie gegen die Lizenzbestimmungen verstoßen.

Ein besserer Ansatz für jdbc-Konnektoren/-Treiber ist die Verwendung von jTDS, das mit den meisten DBMS kompatibel ist, zuverlässiger und schneller ( Laut Benchmarks) und verteilt unter GNU Lizenz. Dies wird Ihnen das Leben viel leichter machen, als wenn Sie versuchen, den Vierkantstift nach einer der oben beschriebenen Methoden in das runde Loch zu schlagen.

11

Sie können auch ein Projekt-Repository erstellen. Es ist nützlich, wenn mehr Entwickler an demselben Projekt arbeiten und die Bibliothek in das Projekt aufgenommen werden muss.

  • Erstellen Sie zunächst eine Repository-Struktur im lib-Verzeichnis Ihres Projekts und kopieren Sie die Bibliothek in dieses Verzeichnis. Die Bibliothek muss folgendes Namensformat haben: <artifactId>-<version>.jar

    <your_project_dir>/lib/com/Microsoft/sqlserver/<artifactId>/<version>/

  • Erstellen Sie eine pom-Datei neben der Bibliotheksdatei und geben Sie die folgenden Informationen ein:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xsi:schemaLocation="http://maven.Apache.org/POM/4.0.0 http://maven.Apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.Apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <modelVersion>4.2.0</modelVersion>
        <groupId>com.Microsoft.sqlserver</groupId>
        <artifactId>sqljdbc4</artifactId>
        <version>4.2</version>
    </project>
    
  • Zu diesem Zeitpunkt sollten Sie diese Verzeichnisstruktur haben:

    <your_project_dir>/lib/com/Microsoft/sqlserver/sqljdbc4/4.2/sqljdbc4-4.2.jar<your_project_dir>/lib/com/Microsoft/sqlserver/sqljdbc4/4.2/sqljdbc4-4.2.pom

  • Gehen Sie zur POM-Datei Ihres Projekts und fügen Sie ein neues Repository hinzu:

    <repositories>
        <repository>
            <id>Project repository</id>
            <url>file://${basedir}/lib</url>
        </repository>
    </repositories>
    
  • Fügen Sie abschließend eine Abhängigkeit von der Bibliothek hinzu:

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

pdate 4.3.2017

Die Bibliothek kann anscheinend aus einem öffentlich zugänglichen Repository bezogen werden. Weitere Informationen finden Sie unter den Antworten von Nirmal und Jacek Grzelaczyk.

11
Václav Kužel

einfach hinzufügen

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

Sie können einen anderen Treiber verwenden

<dependency>
    <groupId>net.sourceforge.jtds</groupId>
    <artifactId>jtds</artifactId>
    <version>1.3.1</version>
</dependency>

und in xml

<bean id="idNameDb" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="net.sourceforge.jtds.jdbc.Driver" />
        <property name="url" value="jdbc:jtds:sqlserver://[ip]:1433;DatabaseName=[name]" />
        <property name="username" value="user" />
        <property name="password" value="password" />
</bean>
0

Es ist nicht zu schwer. Ich habe die Lizenz noch nicht gelesen. Ich habe jedoch bewiesen, dass dies funktioniert. Sie können die JAR-Datei sqljdbc4 in eine Netzwerkfreigabe oder ein lokales Verzeichnis kopieren. Ihr build.gradle sollte so aussehen:

apply plugin: 'Java'
//apply plugin: 'maven'
//apply plugin: 'enhance'

sourceCompatibility = 1.8
version = '1.0'

//library versions
def hibernateVersion='4.3.10.Final'
def microsoftSQLServerJDBCLibVersion='4.0'
def springVersion='2.5.6'

def log4jVersion='1.2.16'
def jbossejbapiVersion='3.0.0.GA'

repositories {
    mavenCentral()
    maven{url "file://Sharedir/releases"}
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.11'
    compile "org.hibernate:hibernate-core:$hibernateVersion"
    compile "com.Microsoft.sqlserver:sqljdbc4:$microsoftSQLServerJDBCLibVersion"
}

task showMeCache << {
    configurations.compile.each { println it }
}

im Verzeichnis sharedir/releases habe ich ein Verzeichnis ähnlich der Maven-Struktur:\sharedir\releases\com\Microsoft\sqlserver\sqljdbc4\4.0\sqljdbc4-4.0.jar

viel Glück.

David Yen

0
David Mobile

Für ein in sich geschlossenes Maven-Projekt installiere ich normalerweise alle externen JAR-Abhängigkeiten in das Projekt-Repository. Für den SQL Server-JDBC-Treiber können Sie Folgendes ausführen:

  • laden Sie den JDBC-Treiber von https://www.Microsoft.com/en-us/download/confirmation.aspx?id=11774 herunter
  • ordner erstellen local-repo in Ihrem Maven-Projekt
  • temporäre Kopie sqljdbc42.jar into local-repo Mappe
  • im local-repo Ordner ausführen mvn deploy:deploy-file -Dfile=sqljdbc42.jar -DartifactId=sqljdbc42 -DgroupId=com.Microsoft.sqlserver -DgeneratePom=true -Dpackaging=jar -Dversion=6.0.7507.100 -Durl=file://. um JAR im lokalen Repository bereitzustellen (zusammen mit Ihrem Code in SCM gespeichert)
  • sqljdbc42.jar und heruntergeladene Dateien können gelöscht werden
  • ändere dein pom.xml und fügen Sie einen Verweis auf das lokale Repository des Projekts hinzu: xml <repositories> <repository> <id>parent-local-repository</id> <name>Parent Local repository</name> <layout>default</layout> <url>file://${basedir}/local-repo</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> Jetzt können Sie Ihr Projekt überall ohne zusätzliche Konfigurationen oder Installationen ausführen.
0
Ramunas

Wenn Sie Probleme beim Einbeziehen der Abhängigkeit für 6.1.0.jre7 von @nirmals haben, antworten Sie in https://stackoverflow.com/a/41149866/1570834 in Ihrem pom mit commons-codec/Azure -keyvault Ich gehe lieber so vor:

    <dependency>
       <groupId>com.Microsoft.sqlserver</groupId>
       <artifactId>mssql-jdbc</artifactId>
       <version>6.2.2.jre7</version>                
    </dependency>
0
ROOP