10

标题

我试图在我的 Java EE6 应用程序(类名 VisualizerRepository.java)中使用 jdbc 连接,我在 nexus 存储库中有 jdbc 驱动程序

该类必须执行一个存储过程并打印该过程的结果。由于 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]
4

5 回答 5

15

ojdbc jar 不在公共 maven 存储库中。您可以手动将 jar 添加到本地存储库。

从以下位置下载 jar:

  • 甲骨文网站
  • 从您的 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>
于 2013-08-13T04:24:23.563 回答
3

Oracle JDBC 驱动程序可通过一些额外的安全相关步骤从 Oracle Maven 存储库访问。
查看博客“从 Oracle Maven 存储库(无 IDE)获取 Oracle JDBC 驱动程序和 UCP ”以获取更多详细信息。

于 2016-04-11T19:28:21.360 回答
0

我试图让 gradle 从我当地的 maven repo 中拉出罐子,甚至flatDirrepositories关闭时使用,但没有效果。最后,我lib在我的项目中创建了一个文件夹并将jar放入其中并添加

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

我不认为这是处理它的最漂亮的方法,但它确实有效,而且现在已经足够好了。

在此处输入图像描述

于 2020-06-03T12:52:09.197 回答
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 驱动程序下载页面

于 2020-12-05T09:39:49.687 回答
-1

驻留在答案中的 maven 命令

(同时它取自http://www.mkyong.com/maven/how-to-add-oracle-jdbc-driver-in-your-maven-local-repository/)对我不起作用。但删除{}字符后,一切都很好:

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

也不要忘记将版本号添加到 jar 文件的名称中,例如ojdb6-11.2.0.jar

于 2016-04-08T06:18:56.630 回答