Maven依存関係としてのOracle JDBC ojdbc6 JAR


103

Mavenにojdbc6.jarファイルをプロジェクトのwarファイルにバンドルさせることができないようです。Hibernateツールの依存関係を直接指定すると、POMファイル内で機能します。しかし、プロジェクトのwarファイルにバンドルされないため、私のプロジェクトはTomcatで実行できません。

私はここでこの質問に指定されたものを含め、ネットで見つけることができるすべての解決策を試しました:

MavenリポジトリーでOracle JDBCドライバーを見つける

最近、私は次のことを行いました:

  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]

なぜこれが機能しないのですか?部屋に高価なコンピュータ部品を投げる準備ができています。これは多くの時間を無駄にしました。(オラクル、ありがとう。もう一度いくら払った?)

Macを使っているからでしょうか?


6
ファイルojdbc6-11.2.0.3.jarがローカルリポジトリの正しいフォルダにあるかどうかを確認できますか?
Raghuram 2012年

1
jarファイルがリポジトリにコピーされるようには見えません。それを参照しているように見えるファイルのほんの束。ファイルは正確にそれを呼び出す必要がありますか?それは私のlibディレクトリにあるojdbc6.jarです。
Marvo

15
うーん!そうmvn install:install-fileに働いていません。ojdbc6.jarコマンドの絶対的な場所を指定するか、それを含むフォルダーからコマンドを実行する必要があります。ファイル名は問題ありません。-Xフラグを付けて実行すると、情報をデバッグできます。
Raghuram 2012年

実行したときに出力はありますinstall-fileか?Mavenは、ファイルのインストール先、またはエラーが発生したかどうかを通知します。
nwinkler 2012年

1
無関係なメモとして:リポジトリミラー(Nexus、Artifactory、Archivaなど)の使用を検討する必要があります。そこにファイルをアップロードすれば、あなただけでなく、同じミラーを使用している他の人も利用できます。
nwinkler 2012年

回答:


136

ローカルリポジトリにインストールするのではなく、新しいMavenリポジトリを(できれば独自のアーティファクトを使用して)プロジェクトに追加することをお勧めします。

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
会社のリポジトリに依存関係をインストールするとしたら、それも違法でしょうか?または公共のレポだけが違法ですか?ライブラリ用のパブリックMavenリポジトリがないのはOracleの責任です。誰かが自分のリポジトリでそのライブラリを共有している(そして、それは継続的にアクセス可能である)ほうがいいと思います。
Ondrej Kvasnovsky、2014

3
Ondrej:私の理解では、リポジトリが公開されている場合のみ違法です。私の会社は、あなたが提案した方法でプライベートmavenリポジトリ(artifactory)でojdbcをホストしています。
レイマイヤーズ14

3
もちろん、プロジェクトに任意のリポジトリを追加するほうが「いい」です。うわー、これは多くのレベルで間違っています
zb226

41

将来この投稿を読む人は、jarが存在するディレクトリにcdする必要はありません。これがあなたがする必要があることです-

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
注:これらの手順を実行した後でも、実行するまで、Eclipseで同じエラーが発生しましたMaven > Update Project。その後、すべてが美しく機能しました。このステップは明白かもしれませんが、私はそれを追加するだろうと考えました。
user12893298320392 2015

2
... "hello future reader post"に追加します。これはpowershellの実行に失敗しましたが、通常のWindows CMDシェルを実行すると期待どおりに機能しました。あなたのためのPowershellはありません!
2015

窓でこれを行おうとする人にとって、フェライムのアドバイスは金です。コマンドプロンプトでmvnコマンドを入力して、Maven 3.3.3を実行しているWindows 7でこれを機能させました。powershellが「pom not found」エラーをスローし続けました。
Quest Monger 2015年

上記の順序は重要です。最初に依存関係を追加してから、mvn intsallコマンドを実行しました。エラーは消えませんでした。依存関係を削除して保存し、再度追加して保存しました。すべてのエラーが解決されました(プロジェクトが「自動ビルド」に設定されている場合)
Kailas

24

正解は、元の質問のコメントセクションでRaghuramによって提供されました。

何らかの理由で、「mvn install」に物理的なojdbc6.jarファイルの絶対パスを指定しても機能しませんでした。(または、コマンドを実行するときに一貫して繰り返しフラップアップしましたが、エラーは発行されませんでした。)

私がojdb6.jarを保持しているディレクトリにcd-ingし、そこからコマンドを実行すると、初めて動作しました。

ラグラムがこの質問に答えたい場合は、代わりに彼の答えを受け入れます。みんな、ありがとう!


1
ありがとう@RaghuramとMarvo
スパイダーマン

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

SpringアプリケーションのORACLE JAR問題を解決するには、

Maven依存関係としてのOracle JDBC ojdbc6 JAR

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

Mavenは、常に推測しやすいとは限らないバージョンに非常にうるさいです。バージョンが11.2.0.3ではなく11.2.0であることを確認してください
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が存在するかどうかを確認します。そうでない場合は、$ M2_HOME / conf / settings.xmlでMavenリポジトリ設定を確認してください


2

以下の設定は私のために働きました。詳細については、このリンクを参照してください。

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

私が質問したので、それは新しいことです。いいね!
Marvo 2016

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-> find .m2に移動し、ダウンロードしたojdbc jarファイルをそこに貼り付けます。サーバーがこれを自動的に選択します。


-1

Oracle JDBCドライバーとその他のコンパニオンJARは、Central Mavenで入手できます。11.2.0.4、12.2.0.2、18.3.0.0、19.3.0.0、19.6.0.0、および19.7.0.0の公式にサポートされているOracle JDBCバージョンを使用することをお勧めします。これらはCentral Maven Repositoryで入手できます。詳細については、Maven Central Guideを参照してください。

最新のバージョンを使用することをお勧めします。JDKの互換性については、FAQをご覧ください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.