ChatGPT解决这个技术问题 Extra ChatGPT

Oracle JDBC ojdbc6 Jar 作为 Maven 依赖项

我似乎无法让 Maven 将 ojdbc6.jar 文件捆绑到我项目的 war 文件中。当直接为 Hibernate 工具指定依赖项时,我让它在 POM 文件中工作。但它不会与项目的 war 文件捆绑在一起,因此我的项目不会在 Tomcat 上运行。

我已经尝试了我可以在网上找到的所有解决方案,包括这里为这个问题指定的解决方案:

Find Oracle JDBC driver in Maven repository

最近,我做了以下事情:

将 jar 文件下载到我的机器运行以下命令将 jar 安装到我的本地存储库中: mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.3 -Dpackaging=jar -Dfile=ojdbc6 .jar -DgeneratePom=true (我也尝试过该命令的各种变体。)最后,我将依赖项放入我的 pom 文件中: com.oracle ojdbc6 11.2.0.3 我运行了一个干净的构建,但它失败了: mvn -U clean package [INFO] Scanning for projects... [INFO] [INFO] -- -------------------------------------------------- -------------------- [INFO] 构建 jazztwo 0.0.1 [INFO] -------------------- -------------------------------------------------- --- 下载:http://repo1.maven.org/maven2/com/oracle/ojdbc6/11.2.0.3/ojdbc6-11.2.0.3.jar [INFO] ------------- -------------------------------------------------- --------- [信息] 构建失败 [信息] --------------------------------- ----------------- ---------------------- [INFO] 总时间:0.700s [INFO] 完成时间:Tue Mar 27 15:06:14 PDT 2012 [INFO] Final内存:3M/81M [INFO] ------------------------------------------ ------------------ [错误] 无法在项目 jazztwo 上执行目标:无法解析项目 edu.berkeley 的依赖项:jazztwo:war:0.0.1: 在中央找不到工件 com.oracle:ojdbc6:jar:11.2.0.3 (http://repo1.maven.org/maven2) -> [帮助 1]

为什么这不起作用?我准备把昂贵的电脑零件扔到房间的另一头。这已经浪费了很多时间。 (谢谢你,甲骨文。我们又付了你多少钱?)

可能是因为我在Mac上吗?

您能否检查文件 ojdbc6-11.2.0.3.jar 是否在您的本地存储库中的正确文件夹中可用?
jar 文件似乎永远不会被复制到存储库中。只是一堆似乎引用它的文件。该文件是否需要准确地调用?它只是我的 lib 目录中的 ojdbc6.jar。
唔!所以 mvn install:install-file 没有工作。您应该提供 ojdbc6.jar 的绝对位置或从包含它的文件夹中运行命令。文件名没有问题。您可以使用 -X 标志运行,以便调试信息。
运行 install-file 时是否有任何输出? Maven 应该告诉你它将文件安装到哪里或者是否有任何错误。
作为不相关的说明:您应该考虑使用存储库镜像(例如 Nexus、Artifactory、Archiva 等)。您可以将文件上传到那里,它不仅可供您使用,也可供使用同一镜像的其他人使用。

O
Ondrej Kvasnovsky

最好将新的 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'

最终这就是我们所做的。我们在这里建立了一个存储库,现在我们所有的项目都使用它。但是,我认为知道如何做到这两点很有用。
lds.org 存储库合法吗?根据这个答案,这是非法的:stackoverflow.com/a/1074971/1415732
我想知道,如果我将依赖项安装到我的公司存储库中,这是否也是非法的?还是只有公共回购是非法的? Oracle 的错是他们的库没有公共的 Maven 存储库。我宁愿感谢有人在他们的存储库中共享该库(并且始终可以访问)。
Ondrej:据我了解,只有当存储库是公开的时它才是非法的。我的公司按照您建议的方式将 ojdbc 托管在私有 maven 存储库(工件)中。
当然,在您的项目中添加一些任意 repo 会“更好”,是的。哇,这在很多层面上都是错误的
r
rickygrimes

对于将来阅读这篇文章的任何人,您不需要 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>

请注意:执行这些步骤后,在执行 Maven > Update Project 之前,我在 eclipse 中仍然遇到相同的错误。然后一切都很顺利。这一步可能很明显,但我想我会添加它。
...添加到“你好未来的读者帖子”。这在运行 powershell 时失败,但在运行普通的 windows CMD-shell 时按预期工作。没有适合你的powershell!
对于试图在 Windows 上执行此操作的人,phareim 的建议是黄金。通过在命令提示符下键入 mvn 命令,我在运行 maven 3.3.3 的 Windows 7 上得到了这个工作。 powershell 不断抛出“找不到 pom”错误。
提到的顺序很重要。我先添加了依赖项,然后运行 mvn intsall 命令,错误没有消失。尝试删除依赖项,保存,然后再次添加并保存。所有错误均已解决(前提是您的项目设置为“自动构建”)
对于 IntelliJ,请确保您 File > Ivalidate Caches / Restart
M
Marvo

Raghuram 在我原来的问题的评论部分提供了正确的答案。

无论出于何种原因,将“mvn install”指向物理 ojdbc6.jar 文件的完整路径对我来说不起作用。 (或者我在运行命令时一直反复弄乱它,但没有发出错误。)

cd-ing 进入我保存 ojdb6.jar 的目录并从那里运行命令第一次工作。

如果 Raghuram 想回答这个问题,我会接受他的回答。感谢大家!


谢谢@Raghuram 和 Marvo
N
Nicolás Alarcón Rapela
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 问题,

Oracle JDBC ojdbc6 Jar 作为 Maven 依赖项

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

Maven 对不容易猜到的版本非常挑剔。很好的发现版本是 11.2.0 而不是 11.2.0.3
对于 Windows,请确保将所有值放在引号中 eq "com.oracle"
s
shermi

首先,您需要从 Oracle 站点下载特定的 jar(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

e
eebbesen

执行后

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 存储库设置


B
Barani r

下面的配置对我有用。有关详细信息,请参阅此 link

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

自从我提出这个问题以来,这是新的。好的!
M
Mohamed

由于 Oracle 是许可产品,因此直接添加 maven 依赖项存在问题。要添加任何版本的 ojdbc.jar,可以执行以下 2 个步骤。

运行以下命令将 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

这会将依赖项添加到本地存储库中。

现在,在 pom 文件中添加依赖项

<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc7</artifactId>
    <version>12.1.0.1.0</version>
</dependency>


V
Veswanth

我试过使用没有版本标签的依赖项,它对我来说很好用。

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

F
Fernando Nogueira

我按照以下命令工作:

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 上。


K
Kiran P Fegade

在 pom.xml 中添加以下依赖项

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

H
Hassan Ahmed

转到C盘->用户-> PcName->找到.m2并将下载的ojdbc jar文件粘贴到那里,服务器会自动选择这个。


我在 .m2 中有 2 个文件夹:存储库和包装器我应该将 jar 粘贴到哪里?
A
Alisson Gomes

公开:https://mvnrepository.com/artifact/com.oracle.database.jdbc/ojdbc6/11.2.0.4

<dependency>
    <groupId>com.oracle.database.jdbc</groupId>
    <artifactId>ojdbc6</artifactId>
    <version>11.2.0.4</version>
</dependency>

那还需要密码吗?我花了一个月的一个下午试图用密码来解决这个问题。这甚至没有考虑到需要从构建服务器访问它。
不,是公开的,配置maven依赖就可以了。
a
anuj jainar

对于 Ubuntu 问题

在 ubuntu .m2\ 文件夹中很难找到并且很难将 jar 放入存储库,因此当我们将步骤 1 的命令放入命令提示符时,它会在本地存储库中创建 ojdbc7 jar。

第 1 步:转到 /home/user/Documents 之类的任何位置打开终端并输入此命令 命令

mvn install:install-file -Dfile=path_of_downloaded_jar/ojdbc7.jar -DgroupId=com.oracle -DartifactId=ojdbc7 -Dversion=12.1.0.2.0 -Dpackaging=jar -X

第二步:把这个依赖放到 pom.xml 依赖

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

第 3 步:更新 Maven。

请注意:

您可以根据需要更改 ojdbc 的版本,例如 ojdbc6/7/8。


N
Nirmala

Central Maven 上提供了 Oracle JDBC 驱动程序和其他配套 Jar。我们建议使用官方支持的 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。这些在 Central Maven Repository 上可用。有关详细信息,请参阅 Maven Central Guide

建议使用最新版本。查看 FAQ 了解 JDK 兼容性。


关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅