Maven ojdbc jar 依赖错误:package oracle.jdbc 不存在。

10

标题

我正在尝试在我的Java EE6应用程序(类名VisualizerRepository.java)中使用jdbc连接,我已经将jdbc驱动程序放在nexus存储库中。

该类必须执行一个存储过程并打印出存储过程的结果。由于JPA 2.0不支持调用存储过程,所以我使用jdbc。

包com.nfsmith.crm.data.repository;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.SQLException;
import javax.sql.DataSource;
import oracle.jdbc.OracleTypes;
import org.jboss.logging.Logger;

@Named
@ApplicationScoped
public class VisualizerRepository 
{
    DataSource datasource;
    Connection connection;
    CallableStatement statement;
    @PostConstruct
    public void initDBConnection()
    {
        InitialContext context;
        try 
        {
        context = new InitialContext();

        datasource = (DataSource) context.lookup("java:jboss/datasources/partmatchDatasource");
        connection = null;
        statement = null;
        connection = datasource.getConnection();

        } 
        catch (NamingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public void getJSonDataList()
    {
        try {
            statement = connection.prepareCall("{call crm.PKG_CRM_RELATIONSHIP.getOrgViewDataJason(?,?,?)}");

        int owner = 48156;
        statement.setInt(1, owner);
        int site = 10;
        statement.setInt(2, site);
        statement.registerOutParameter(3, OracleTypes.CURSOR);
        statement.execute();
    }
        catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        finally
        {           
            try {
                statement.close();
                connection.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
}

当我进行构建时,会看到编译错误,提示找不到oracle.jdbc包和符号。

[ERROR] COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] /C:/Users/rpalle/workspace/CRM/smith-crm-web/src/main/java/com/nfsmith/crm/data/repository/VisualizerRepository.java:[15,19] package oracle.jdbc does not exist
[ERROR] /C:/Users/rpalle/workspace/CRM/smith-crm-web/src/main/java/com/nfsmith/crm/data/repository/VisualizerRepository.java:[66,51] cannot find symbol
  symbol:   variable OracleTypes
  location: class com.nfsmith.crm.data.repository.VisualizerRepository
[INFO] 2 errors 
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO] 
[INFO] Smith CRM ......................................... SUCCESS [0.823s]
[INFO] Smith CRM Web ..................................... FAILURE [4.775s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 6.410s
[INFO] Finished at: Wed Aug 07 13:48:32 CDT 2013
[INFO] Final Memory: 36M/530M
[INFO] ------------------------------------------------------------------------
[WARNING] The requested profile "CRM_local" could not be activated because it does not exist.
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project smith-crm-web: Compilation failure: Compilation failure:
[ERROR] /C:/Users/rpalle/workspace/CRM/smith-crm-web/src/main/java/com/nfsmith/crm/data/repository/VisualizerRepository.java:[15,19] package oracle.jdbc does not exist
[ERROR] /C:/Users/rpalle/workspace/CRM/smith-crm-web/src/main/java/com/nfsmith/crm/data/repository/VisualizerRepository.java:[66,51] cannot find symbol
[ERROR] symbol:   variable OracleTypes
[ERROR] location: class com.nfsmith.crm.data.repository.VisualizerRepository
[ERROR] -> [Help 1]

你在pom文件中添加了依赖吗? - Juned Ahsan
是的,我已经在我的pom文件中添加了依赖项 @JunedAhsan - OTUser
你的 pom.xml 文件长什么样? - Santosh
<dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc6</artifactId> <version>11.2.0.3.0</version> </dependency> - OTUser
5个回答

17

ojdbc jar不在公共的maven仓库中。

你可以手动将jar添加到本地仓库中。

从以下链接下载jar包:

  • oracle官网
  • 从你的oracle数据库服务器中复制 ({ORACLE_HOME}\jdbc\lib\ojdbc6.jar)

安装到你的仓库中

mvn install:install-file -Dfile={Path/to/your/ojdbc.jar} -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0 -Dpackaging=jar

在pom文件中使用

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

2
还要确保在路径周围删除花括号。对于一些人来说可能很明显,但是因为我错误地留下了它,导致安装出现错误。 - Kt Mack
1
抱歉问一下,作为一个初学者,我不知道在哪里输入“mvn install…”命令。我正在使用JBoss Studio。 - romal tandel

3

0

我尝试让Gradle从我的本地Maven仓库中拉取jar包,甚至在repositories闭包中使用了flatDir,但没有效果。最终,我在项目中创建了一个lib文件夹,并将jar包放入其中,然后添加了

dependencies {
    ...
    compile files('lib/ojdbc7.jar')
    ...
}

我不认为这是最美观的处理方式,但它起作用了,现在已经足够好了。

enter image description here


0

我遇到了一个类似的情况,异常会跟随。

java: cannot access oracle.jdbc.OracleTypes error

我手动将ojdbc JAR安装到本地仓库。然而问题仍然存在。这是因为我安装了ojbc10.jar。由于某些原因,我认为JAR名称中的数字类似于JDBC版本。但它们更与Java版本相关。我的项目正在使用Java JDK 8。因此,在安装ojdbc8.jar后,问题得到解决。

因此,在下载时,请务必检查发布说明。已通过JDK8、JDK9、JDK11认证。

Oracle JDBC Driver Download Page


-1

我不明白为什么会被踩。正如我在这篇帖子中提到的,回答这个问题所使用的命令实际上是从我提供的链接中获取的。这个命令对我来说并没有起作用,但在做了一些我也提到过的差异之后,它开始起作用了。 - yılmaz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接