Oracle JDBC ojdbc6 Jar เป็น Maven Dependency


103

ดูเหมือนว่าฉันไม่สามารถให้ Maven มัดไฟล์ ojdbc6.jar ไว้ในไฟล์ war ของโปรเจ็กต์ของฉันได้ ฉันให้มันทำงานภายในไฟล์ POM เมื่อระบุการอ้างอิงโดยตรงสำหรับเครื่องมือไฮเบอร์เนต แต่จะไม่รวมเข้ากับไฟล์ war ของโปรเจ็กต์ดังนั้นโปรเจ็กต์ของฉันจะไม่ทำงานบน Tomcat

ฉันได้ลองใช้วิธีแก้ปัญหาทุกอย่างที่หาได้จากอินเทอร์เน็ตรวมถึงที่ระบุไว้สำหรับคำถามนี้ที่นี่:

ค้นหาไดรเวอร์ Oracle JDBC ในที่เก็บ Maven

ล่าสุดฉันทำสิ่งต่อไปนี้:

  1. ดาวน์โหลดไฟล์ jar ลงในเครื่องของฉัน

  2. รันคำสั่งต่อไปนี้เพื่อติดตั้ง jar ในที่เก็บโลคัลของฉัน:

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

    (ฉันได้ลองใช้คำสั่งนั้นทุกรูปแบบแล้วเช่นกัน)

  3. สุดท้ายฉันใส่การอ้างอิงลงในไฟล์ pom ของฉัน:

    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc6</artifactId>
        <version>11.2.0.3</version>
    </dependency>
  4. ฉันรันบิลด์ใหม่ทั้งหมด แต่ล้มเหลว:

    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]

ทำไมถึงไม่ทำงาน ฉันพร้อมที่จะโยนชิ้นส่วนคอมพิวเตอร์ราคาแพงไปทั่วห้อง นี้เสียเวลามาก (ขอบคุณ Oracle เราจ่ายเงินให้คุณอีกเท่าไหร่?)

อาจเป็นเพราะฉันใช้ Mac หรือเปล่า


6
คุณตรวจสอบได้ไหมว่าไฟล์ojdbc6-11.2.0.3.jarมีอยู่ในที่เก็บในเครื่องของคุณในโฟลเดอร์ที่ถูกต้องหรือไม่?
Raghuram

1
ดูเหมือนว่าไฟล์ jar จะไม่ถูกคัดลอกไปยังที่เก็บ มีเพียงไฟล์จำนวนมากที่ดูเหมือนจะอ้างอิง ต้องเรียกไฟล์ตรงนั้นหรือไม่? มันเป็นแค่ ojdbc6.jar ในไดเรกทอรี lib ของฉัน
Marvo

15
อืม! จึงmvn install:install-fileไม่ได้ทำงาน คุณควรระบุตำแหน่งที่แน่นอนของojdbc6.jarหรือเรียกใช้คำสั่งจากโฟลเดอร์ที่มี ชื่อไฟล์ไม่ใช่ปัญหา คุณสามารถเรียกใช้โดยใช้-Xแฟล็กเพื่อให้คุณแก้ไขข้อบกพร่องข้อมูลได้
Raghuram

มีเอาต์พุตเมื่อคุณเรียกใช้install-fileหรือไม่? Maven ควรแจ้งให้คุณทราบว่าติดตั้งไฟล์ไปที่ใดหรือมีข้อผิดพลาดหรือไม่
nwinkler

1
ในฐานะที่เป็นบันทึกที่ไม่เกี่ยวข้อง: คุณควรดูโดยใช้กระจกเก็บข้อมูล (เช่น Nexus, Artifactory, Archiva, ... ) คุณสามารถอัปโหลดไฟล์ที่นั่นได้และไม่เพียง แต่จะพร้อมใช้งานสำหรับคุณเท่านั้น แต่สำหรับคนอื่น ๆ ที่ใช้มิเรอร์เดียวกันด้วย
nwinkler

คำตอบ:


136

เป็นการดีกว่าที่จะเพิ่มที่เก็บ Maven ใหม่ (ควรใช้ Artifactory ของคุณเอง) ในโปรเจ็กต์ของคุณแทนที่จะติดตั้งลงในที่เก็บในเครื่องของคุณ

ไวยากรณ์ Maven:

<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:

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

3
ท้ายที่สุดนั่นคือสิ่งที่เราทำ เราตั้งค่าที่เก็บที่นี่และตอนนี้โครงการทั้งหมดของเราก็ใช้งานได้แล้ว ฉันคิดว่าการรู้วิธีทำทั้งสองอย่างมีประโยชน์
Marvo

3
ที่เก็บ lds.org นั้นถูกกฎหมายหรือไม่? ตามคำตอบนี้ถือว่าผิดกฎหมาย: stackoverflow.com/a/1074971/1415732
Alden

2
ฉันสงสัยว่าถ้าฉันจะติดตั้งการพึ่งพาที่เก็บข้อมูลของ บริษัท ของฉันมันจะผิดกฎหมายด้วยหรือไม่? หรือ repos สาธารณะเท่านั้นที่ผิดกฎหมาย? เป็นความผิดของ Oracle ที่ไม่มีที่เก็บ Maven สาธารณะสำหรับไลบรารีของตน ฉันอยากจะขอบคุณที่มีคนแบ่งปันไลบรารีนั้นในที่เก็บของพวกเขา (และสามารถเข้าถึงได้อย่างสม่ำเสมอ)
Ondrej Kvasnovsky

3
Ondrej: ในความเข้าใจของฉันมันผิดกฎหมายก็ต่อเมื่อที่เก็บนั้นเป็นแบบสาธารณะ บริษัท ของฉันโฮสต์ ojdbc ใน maven repo (artifactory) แบบส่วนตัวในแบบที่คุณแนะนำ
Ray Myers

3
แน่นอนว่า "ดีกว่า" ที่จะเพิ่ม repo ตามอำเภอใจลงในโครงการของคุณใช่ ว้าวผิดหลายระดับเลย
zb226

41

สำหรับใครก็ตามที่อ่านโพสต์นี้ในอนาคตคุณไม่จำเป็นต้อง cd ไปยังไดเร็กทอรีที่มี jar อยู่ นี่คือสิ่งที่คุณต้องทำ -

ไปที่โฟลเดอร์โครงการของคุณซึ่งคุณสามารถเรียกใช้คำสั่ง maven ได้ (เมื่อคุณทำ ls -ltr ในโฟลเดอร์นี้คุณจะเห็น pom.xml)

ทำเช่นนี้ -

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

เมื่อเสร็จแล้วคุณสามารถเพิ่มการอ้างอิงใน pom.xml ของคุณได้ดังนี้ -

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

3
เพียงแค่บันทึก: Maven > Update Projectหลังจากทำตามขั้นตอนเหล่านี้ฉันยังคงมีข้อผิดพลาดเดียวกันในคราสจนกว่าฉันจะดำเนินการ จากนั้นทุกอย่างก็ดำเนินไปอย่างสวยงาม ขั้นตอนนี้อาจชัดเจน แต่ฉันคิดว่าจะเพิ่มเข้าไป
user12893298320392

2
... เพื่อเพิ่มใน "สวัสดีผู้อ่านโพสต์ในอนาคต" สิ่งนี้ล้มเหลวในการรัน powershell แต่ทำงานได้ตามที่คาดไว้โดยใช้ Windows CMD-shell ทั่วไป ไม่มีพาวเวอร์เชลล์สำหรับคุณ!
phareim

สำหรับผู้ที่พยายามทำสิ่งนี้บน windows คำแนะนำของ phareim คือทองคำ ฉันทำให้สิ่งนี้ทำงานบน windows 7 ที่รัน maven 3.3.3 โดยพิมพ์คำสั่ง mvn ในพรอมต์คำสั่ง powershell ยังคงโยนข้อผิดพลาด 'pom not found'
Quest Monger

ลำดับที่กล่าวถึงมีความสำคัญ ฉันได้เพิ่มการอ้างอิงก่อนจากนั้นเรียกใช้คำสั่ง mvn intsall ข้อผิดพลาดไม่หายไป พยายามลบการอ้างอิงบันทึกแล้วเพิ่มกลับอีกครั้งและบันทึก ข้อผิดพลาดทั้งหมดได้รับการแก้ไข (หากโครงการของคุณตั้งค่าเป็น "สร้างโดยอัตโนมัติ")
Kailas

24

Raghuram ให้คำตอบที่ถูกต้องในส่วนความคิดเห็นสำหรับคำถามเดิมของฉัน

ไม่ว่าด้วยเหตุผลใดการชี้ "mvn install" ไปยังเส้นทางแบบเต็มของไฟล์ ojdbc6.jar ทางกายภาพไม่ได้ผลสำหรับฉัน (หรือฉันปัดซ้ำ ๆ อย่างสม่ำเสมอเมื่อเรียกใช้คำสั่ง แต่ไม่มีข้อผิดพลาดเกิดขึ้น)

cd-ing ในไดเร็กทอรีที่ฉันเก็บ ojdb6.jar และการรันคำสั่งจากที่นั่นใช้งานได้ในครั้งแรก

ถ้า Raghuram ต้องการตอบคำถามนี้ฉันจะยอมรับคำตอบของเขาแทน ขอบคุณทุกคน!


1
ขอบคุณ @Raghuram และ 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

เพื่อแก้ไขปัญหา ORACLE JAR กับ Spring Application

Oracle JDBC ojdbc6 Jar เป็น Maven Dependency

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

Maven เป็นคนที่พิถีพิถันมากเกี่ยวกับเวอร์ชันที่เดาได้ไม่ยากเสมอไป เป็นที่เข้าใจดีว่าเวอร์ชัน 11.2.0 ไม่ใช่ 11.2.0.3
Michael Shopsin

5

ก่อนอื่นคุณต้องดาวน์โหลด jar เฉพาะจากไซต์ Oracle (ojdbc.jar เวอร์ชัน 11.2.0.3)

หากคุณดาวน์โหลดไปที่ C: \ filefolder

ไปที่ไดเร็กทอรีนั้นในพรอมต์ cmd และระบุคำสั่งด้านล่างมันจะติดตั้งการอ้างอิงจากนั้นคุณสามารถสร้างโครงการของคุณ

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

2

หลังจากดำเนินการ

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

ตรวจสอบโฟลเดอร์ที่เก็บ. m2 ของคุณ (/com/oracle/ojdbc6/11.2.0.3) เพื่อดูว่ามี ojdbc6.jar อยู่หรือไม่ หากไม่ตรวจสอบการตั้งค่าที่เก็บ maven ของคุณภายใต้ $ M2_HOME / conf / settings.xml


2

ด้านล่าง config ใช้งานได้สำหรับฉัน อ้างอิงลิงค์นี้สำหรับรายละเอียดเพิ่มเติม

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

นั่นเป็นเรื่องใหม่ตั้งแต่ฉันถามคำถาม ดี!
Marvo

2

เนื่องจาก Oracle เป็นผลิตภัณฑ์ลิขสิทธิ์จึงมีปัญหาในการเพิ่มการพึ่งพา maven โดยตรง หากต้องการเพิ่ม ojdbc.jar เวอร์ชันใดก็ได้ให้ทำ 2 ขั้นตอนด้านล่างนี้

  1. รันคำสั่งด้านล่างเพื่อติดตั้ง ojdbc.jar ในที่เก็บ maven ในเครื่อง
/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

สิ่งนี้จะเพิ่มการอ้างอิงลงในที่เก็บในเครื่อง

  1. ตอนนี้เพิ่มการอ้างอิงในไฟล์ pom
<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc7</artifactId>
    <version>12.1.0.1.0</version>
</dependency>

1

ฉันทำตามคำสั่งด้านล่างมันใช้งานได้:

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

หลังจากการติดตั้งตรวจสอบว่า jar ได้รับการติดตั้งอย่างถูกต้องบน M2_repo ของคุณ


1

ฉันได้ลองใช้การอ้างอิงโดยไม่มีแท็กเวอร์ชันและมันก็ใช้ได้ดีสำหรับฉัน

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

0

เพิ่มการพึ่งพาการติดตามใน pom.xml

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

0

ไปที่ไดรฟ์ C-> ผู้ใช้ -> PcName-> ค้นหา. m2 และวางไฟล์ jar ojdbc ที่ดาวน์โหลดไว้ที่นั่นเซิร์ฟเวอร์จะเลือกสิ่งนี้โดยอัตโนมัติ


-1

ไดรเวอร์ Oracle JDBC และ Jars ที่ใช้ร่วมกันอื่น ๆ มีอยู่ใน Central Maven เราขอแนะนำให้ใช้ Oracle JDBC เวอร์ชันที่รองรับอย่างเป็นทางการตั้งแต่ 11.2.0.4, 12.2.0.2, 18.3.0.0, 19.3.0.0, 19.6.0.0 และ 19.7.0.0 เหล่านี้จะมีอยู่บนกลาง Maven Repository อ้างอิงMaven Central Guideสำหรับรายละเอียดเพิ่มเติม

ขอแนะนำให้ใช้เวอร์ชันล่าสุด ดูคำถามที่พบบ่อยเกี่ยวกับความเข้ากันได้ของ JDK

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.