使用 Maven 依赖项时出现 java.lang.ClassNotFoundException : oracle. jdbc.OracleDriver

标签 java oracle maven jdbc oracle11g

        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-jdbc</artifactId>
            <version>7.0.47</version>
        </dependency>

上面是我正在使用的 Maven 依赖项。

    PoolProperties p = new PoolProperties();

    p.setUrl("jdbc:oracle:thin:@//ip:port:ora11g");
    p.setDriverClassName("oracle.jdbc.OracleDriver");
    p.setUsername("un");
    p.setPassword("pw");
    p.setJmxEnabled(true);
    p.setTestWhileIdle(false);
    p.setTestOnBorrow(true);
    p.setValidationQuery("SELECT 1");
    p.setTestOnReturn(false);
    p.setValidationInterval(30000);
    p.setTimeBetweenEvictionRunsMillis(30000);
    p.setMaxActive(100);
    p.setInitialSize(10);
    p.setMaxWait(10000);
    p.setRemoveAbandonedTimeout(60);
    p.setMinEvictableIdleTimeMillis(30000);
    p.setMinIdle(10);
    p.setLogAbandoned(true);
    p.setRemoveAbandoned(true);
    p.setJdbcInterceptors(
            "org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;"+
                    "org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer");
    DataSource datasource = new DataSource();
    datasource.setPoolProperties(p);

    Connection con = null;
    try {
        con = datasource.getConnection();
        Statement st = con.createStatement();
        ResultSet rs = st.executeQuery("select * from user");
        int cnt = 1;
        while (rs.next()) {
            System.out.println((cnt++)+". Host:" +rs.getString("Host")+
                    " User:"+rs.getString("User")+" Password:"+rs.getString("Password"));
        }
        rs.close();
        st.close();
    } finally {
        if (con!=null) try {con.close();}catch (Exception ignore) {}
    }

上面是我的数据库查询测试代码片段。

当我执行程序时,我收到“java.lang.ClassNotFoundException:oracle.jdbc.OracleDriver”异常。

我搜索了这个问题,并读到我必须“确保 oracle jdbc jar 位于类路径中”。我不确定为什么我必须手动设置它或者它实际上是必需的。

最佳答案

使用以下依赖项

<dependency>
    <groupId>com.oracle.jdbc</groupId>
    <artifactId>ojdbc8</artifactId>
    <version>12.2.0.1</version>
</dependency>

并使用以下代码连接您的 Oracle 数据库。

Class.forName("oracle.jdbc.OracleDriver");

String dbURL1 = "jdbc:oracle:thin:{USER}/{PASSWORD}@{URL}:{PORT}:{DBNAME}";
//e.g. String dbURL1 = "jdbc:oracle:thin:tiger/scott@localhost:1521:productDB";
Connection  conn1 = DriverManager.getConnection(dbURL1);
if (conn1 != null) {
    System.out.println("Connected with connection #1");
}

关于使用 Maven 依赖项时出现 java.lang.ClassNotFoundException : oracle. jdbc.OracleDriver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59696962/

相关文章:

Java Date vs Gregorian Calendar/48h 区别?

sql - Listagg 分区而不是 Group By

java - 同步线程

java - 使用正则表达式替换java中的querystring属性值

java - 递归方法的结果

java - 无法使用 Struts 2.5 运行简单的登录应用程序

java - Maven/Apache wdsl2code 生成的类对于 Eclipse 是隐藏的

sql - 选择有条件的日期时间(Oracle)

java - 如何在 Java 中为 Oracle 数据库创建只读连接

java - 从 Maven 存储库加载 OpenCV 库时出错