Oracle JDBC ojdbc6 Jar als Maven-Abhängigkeit


103

Ich kann Maven scheinbar nicht dazu bringen, die Datei ojdbc6.jar in die Kriegsdatei meines Projekts zu bündeln. Ich habe es in der POM-Datei arbeiten, wenn eine Abhängigkeit direkt für Hibernate-Tools angegeben wird. Es wird jedoch nicht mit der Kriegsdatei des Projekts gebündelt, und daher wird mein Projekt nicht auf Tomcat ausgeführt.

Ich habe jede Lösung ausprobiert, die ich im Internet finden kann, einschließlich der für diese Frage angegebenen:

Suchen Sie den Oracle JDBC-Treiber im Maven-Repository

Zuletzt habe ich Folgendes getan:

  1. Laden Sie die JAR-Datei auf meinen Computer herunter

  2. Führen Sie den folgenden Befehl aus, um das JAR in meinem lokalen Repository zu installieren:

    mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.3 -Dpackaging=jar -Dfile=ojdbc6.jar -DgeneratePom=true

    (Ich habe auch alle möglichen Varianten dieses Befehls ausprobiert.)

  3. Schließlich habe ich die Abhängigkeit in meine POM-Datei eingefügt:

    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc6</artifactId>
        <version>11.2.0.3</version>
    </dependency>
  4. Ich führe einen sauberen Build aus, aber er schlägt fehl:

    mvn -U clean package
    
    [INFO] Scanning for projects...
    [INFO]                                                                         
    [INFO] ------------------------------------------------------------------------
    [INFO] Building jazztwo 0.0.1
    [INFO] ------------------------------------------------------------------------
    Downloading: http://repo1.maven.org/maven2/com/oracle/ojdbc6/11.2.0.3/ojdbc6-11.2.0.3.jar
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD FAILURE
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 0.700s
    [INFO] Finished at: Tue Mar 27 15:06:14 PDT 2012
    [INFO] Final Memory: 3M/81M
    [INFO] ------------------------------------------------------------------------
    [ERROR] Failed to execute goal on project jazztwo: Could not resolve dependencies for project edu.berkeley:jazztwo:war:0.0.1: Could not find artifact com.oracle:ojdbc6:jar:11.2.0.3 in central (http://repo1.maven.org/maven2) -> [Help 1]

Warum funktioniert das nicht? Ich bin bereit, teure Computerteile durch den Raum zu werfen. Das hat so viel Zeit verschwendet. (Danke, Oracle. Wie viel haben wir Ihnen wieder bezahlt?)

Liegt es vielleicht daran, dass ich auf einem Mac bin?


6
Können Sie überprüfen, ob die Datei ojdbc6-11.2.0.3.jarin Ihrem lokalen Repository im richtigen Ordner verfügbar ist?
Raghuram

1
Die JAR-Datei scheint nie in das Repository kopiert zu werden. Nur ein paar Dateien, die darauf verweisen. Muss die Datei genau so aufgerufen werden? Es ist nur ojdbc6.jar in meinem lib-Verzeichnis.
Marvo

15
Hmm! so mvn install:install-filehat nicht funktioniert. Sie sollten den absoluten Speicherort des ojdbc6.jarBefehls angeben oder ihn in dem Ordner ausführen, der ihn enthält. Der Dateiname ist kein Problem. Sie können mit einem -XFlag ausgeführt werden, um Informationen zu debuggen.
Raghuram

Gibt es eine Ausgabe, wenn Sie ausführen install-file? Maven sollte Ihnen mitteilen, wo die Datei installiert wird oder ob Fehler aufgetreten sind.
Nwinkler

1
Als Hinweis ohne Bezug: Sie sollten die Verwendung eines Repository-Spiegels in Betracht ziehen (z. B. Nexus, Artifactory, Archiva, ...). Sie könnten die Datei dort hochladen und sie wäre nicht nur für Sie verfügbar, sondern auch für alle anderen, die denselben Spiegel verwenden.
Nwinkler

Antworten:


136

Es ist besser, Ihrem Projekt ein neues Maven-Repository hinzuzufügen (vorzugsweise mit Ihrem eigenen Artefakt), als es in Ihrem lokalen Repository zu installieren.

Maven-Syntax:

<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc6</artifactId>
    <version>11.2.0.3</version>
</dependency>
... 
<repositories>
    <repository>
      <id>codelds</id>
      <url>https://code.lds.org/nexus/content/groups/main-repo</url>
    </repository>
  </repositories>

Grails Beispiel:

mavenRepo "https://code.lds.org/nexus/content/groups/main-repo"
build 'com.oracle:ojdbc6:11.2.0.3'

3
Letztendlich haben wir das getan. Wir haben hier ein Repository eingerichtet, das jetzt von allen unseren Projekten verwendet wird. Ich denke, es ist jedoch nützlich zu wissen, wie man beides macht.
Marvo

3
Ist das lds.org-Repository legal? Nach dieser Antwort ist es illegal: stackoverflow.com/a/1074971/1415732
Alden

2
Ich frage mich, ob es auch illegal wäre, wenn ich die Abhängigkeit von meinem Unternehmens-Repository installieren würde. Oder sind nur öffentliche Repos illegal? Es ist die Schuld von Oracle, dass sie kein öffentliches Maven-Repository für ihre Bibliotheken haben. Ich würde es eher begrüßen, wenn jemand diese Bibliothek in seinem Repository freigibt (und ständig darauf zugreifen kann).
Ondrej Kvasnovsky

3
Ondrej: Nach meinem Verständnis ist es nur illegal, wenn das Repository öffentlich ist. Meine Firma hostet ojdbc in einem privaten Maven-Repo (künstlich) genau so, wie Sie es vorschlagen.
Ray Myers

3
Natürlich ist es "besser", Ihrem Projekt ein beliebiges Repo hinzuzufügen, ja. Wow, das ist auf so vielen Ebenen falsch
zb226

41

Wenn Sie diesen Beitrag in Zukunft lesen möchten, müssen Sie nicht in das Verzeichnis wechseln, in dem sich das Glas befindet. Folgendes müssen Sie tun:

Wechseln Sie zu Ihrem Projektordner, in dem Sie Maven-Befehle ausführen können. (Wenn Sie in diesem Ordner ein ls -ltr ausführen, sollte pom.xml angezeigt werden.)

Mach das -

mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.3 -Dpackaging=jar -Dfile=<Path where the jar is, example downloads>/ojdbc6.jar -DgeneratePom=true

Sobald dies erledigt ist, können Sie die Abhängigkeit in Ihrer pom.xml hinzufügen.

    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc6</artifactId>
        <version>11.2.0.3</version>
    </dependency>

3
Nur eine Anmerkung: Nachdem ich diese Schritte ausgeführt hatte, hatte ich immer noch den gleichen Fehler in Eclipse, bis ich ausgeführt habe Maven > Update Project. Dann hat alles wunderbar funktioniert. Dieser Schritt mag offensichtlich sein, aber ich dachte, ich würde ihn hinzufügen.
user12893298320392

2
... um den "Hallo zukünftigen Leserbeitrag" zu ergänzen. Dies schlug beim Ausführen von Powershell fehl, funktionierte jedoch wie erwartet beim Ausführen der normalen Windows-CMD-Shell. Keine Powershell für dich!
Phareim

Für Leute, die dies unter Windows versuchen, ist Phareims Rat Gold wert. Ich habe dies unter Windows 7 unter Maven 3.3.3 funktioniert, indem ich den Befehl mvn in die Eingabeaufforderung eingegeben habe. Powershell warf immer wieder den Fehler "Pom nicht gefunden".
Quest Monger

Die angegebene Reihenfolge ist wichtig. Ich hatte zuerst die Abhängigkeit hinzugefügt und dann den Befehl mvn intsall ausgeführt. Der Fehler ist nicht verschwunden. Es wurde versucht, die Abhängigkeit zu entfernen, zu speichern und dann wieder hinzuzufügen und zu speichern. Alle Fehler behoben (vorausgesetzt, Ihr Projekt ist auf "automatisch erstellen" eingestellt)
Kailas

24

Die richtige Antwort lieferte Raghuram im Kommentarbereich auf meine ursprüngliche Frage.

Aus irgendeinem Grund funktionierte es für mich nicht, "mvn install" auf einen vollständigen Pfad der physischen Datei "ojdbc6.jar" zu verweisen. (Oder ich habe es beim Ausführen des Befehls immer wieder wiederholt, aber es wurden keine Fehler ausgegeben.)

Das erste Mal funktionierte es, in das Verzeichnis zu wechseln, in dem ich ojdb6.jar behalte, und den Befehl von dort aus auszuführen.

Wenn Raghuram diese Frage beantworten möchte, akzeptiere ich stattdessen seine Antwort. Vielen Dank an alle!


1
Danke @Raghuram und Marvo
Spiderman

7
mvn install:install-file 
-Dfile=C:\Users\xxxx\Downloads\lib\ojdbc6.jar 
-DgroupId=com.oracle
-DartifactId=ojdbc6 -Dversion=11.2.0 -Dpackaging=jar

um das ORACLE JAR-Problem mit der Spring-Anwendung zu beheben,

Oracle JDBC ojdbc6 Jar als Maven-Abhängigkeit

    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc6</artifactId>
        <version>11.2.0</version>
    </dependency>`

Maven ist sehr wählerisch bei Versionen, die nicht immer leicht zu erraten sind. Schön, dass die Version 11.2.0 ist, nicht 11.2.0.3
Michael Shopsin

5

Zuerst müssen Sie das jeweilige JAR von der Oracle-Site herunterladen (ojdbc.jar Version 11.2.0.3).

Wenn Sie es in den Ordner C: \ herunterladen

Wechseln Sie in der cmd-Eingabeaufforderung in dieses Verzeichnis und geben Sie den folgenden Befehl ein. Dadurch wird die Abhängigkeit installiert. Anschließend können Sie Ihr Projekt erstellen.

mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dpackaging=jar -Dversion=11.2.0.4.0 -Dfile=ojdbc6.jar -DgeneratePom=true

2

Nach der Ausführung

mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.3 -Dpackaging=jar -Dfile=ojdbc6.jar -DgeneratePom=true

Überprüfen Sie in Ihrem .m2-Repository-Ordner (/com/oracle/ojdbc6/11.2.0.3), ob ojdbc6.jar vorhanden ist. Wenn nicht, überprüfen Sie die Einstellungen Ihres Maven-Repositorys unter $ M2_HOME / conf / settings.xml


2

Die folgende Konfiguration hat bei mir funktioniert. Weitere Informationen finden Sie unter diesem Link .

<dependency>
 <groupId>com.oracle.jdbc</groupId>
 <artifactId>ojdbc7</artifactId>
 <version>12.1.0.2</version>
</dependency>

Das ist neu, seit ich die Frage gestellt habe. Nett!
Marvo

2

Da Oracle das lizenzierte Produkt ist, gibt es Probleme beim direkten Hinzufügen der Maven-Abhängigkeit. Um eine beliebige Version von ojdbc.jar hinzuzufügen, können die folgenden 2 Schritte ausgeführt werden.

  1. Führen Sie den folgenden Befehl aus, um ojdbc.jar im lokalen Maven-Repository zu installieren.
/opt/apache-maven/bin/mvn install:install-file
    -Dfile=<path-to-file>/ojdbc7.jar
    -DgroupId=com.oracle
    -DartifactId=ojdbc7
    -Dversion=12.1.0.1.0
    -Dpackaging=jar

Dadurch wird die Abhängigkeit zum lokalen Repository hinzugefügt.

  1. Fügen Sie nun die Abhängigkeit in die POM-Datei ein
<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc7</artifactId>
    <version>12.1.0.1.0</version>
</dependency>

1

Ich folgte dem folgenden Befehl, es funktionierte:

mvn install:install-file -Dfile=E:\JAVA\Spring\ojdbc14-10.2.0.4.0.jar\ojdbc14-10.2.0.4.0.jar -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0.4.0 -Dpackaging=jar

Überprüfen Sie nach der Installation, ob jar auf Ihrem M2_repo korrekt installiert ist.


1

Ich habe versucht, die Abhängigkeit ohne Versions-Tag zu verwenden, und es hat für mich gut funktioniert.

<dependency>
    <groupId>com.oracle.ojdbc</groupId>
    <artifactId>ojdbc8</artifactId>
</dependency>

0

Folgende Abhängigkeit in pom.xml hinzufügen

<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>oracle</artifactId>
    <version>10.2.0.2.0</version>
</dependency>

0

Gehen Sie zum Laufwerk C-> Benutzer-> PC-Name-> .m2 suchen und fügen Sie dort die heruntergeladene ojdbc-JAR-Datei ein. Der Server wählt diese automatisch aus.


-1

Oracle JDBC-Treiber und andere Begleit-Jars sind in Central Maven verfügbar. Wir empfehlen, die offiziell unterstützten Oracle JDBC-Versionen von 11.2.0.4, 12.2.0.2, 18.3.0.0, 19.3.0.0, 19.6.0.0 und 19.7.0.0 zu verwenden. Diese sind im Central Maven Repository verfügbar . Siehe Maven Central GuideWeitere Informationen finden .

Es wird empfohlen, die neueste Version zu verwenden. Lesen Sie die FAQ zur JDK-Kompatibilität.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.