总是得到“ classnotfound”尝试OpenJDK 11&#x2B时错误ojdbc10.jar for Oracle 19c

发布于 01-20 13:16 字数 1633 浏览 4 评论 0原文

想要在GCP Cloud Shell中运行Java程序以连接Oracle 19c和Java版本,那里有OpenJDK 11。始终获得ClassNotFoundException。

在Windows 10笔记本电脑中尝试了相同的OpenJDK(来自Redhat),并遇到了相同的错误。

然后,我尝试了Windows 10中的JDK 11(来自Oracle),它工作正常。

因为最终我必须在GCP中使用OpenJDK,所以如何解决此问题?

非常简单的Java代码 -

import java.sql.*;

class JdbcOracleConnectTest {
    public static void main(String args[]) {
        try {
            // step1 load the driver class
            Class.forName("oracle.jdbc.driver.OracleDriver");

            // step2 create the connection object
            Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "system", "oracle");

            // step3 create the statement object
            Statement stmt = con.createStatement();

            // step4 execute query
            ResultSet rs = stmt.executeQuery("select * from emp");
            while (rs.next())
                System.out.println(rs.getInt(1) + "  " + rs.getString(2) + "  " + rs.getString(3));

            // step5 close the connection object
            con.close();
        } catch (Exception e) {
            System.out.println(e);
        }
    }
}
C:\app\jdk11\bin\java -version
openjdk version "11.0.2" 2019-01-15
OpenJDK Runtime Environment 18.9 (build 11.0.2+9)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode)

“ ojdbc10.jar”来自Oracle。

C:\app\jdk11\bin\java -cp C:\temp\ojdbc10.jar JdbcOracleConnectionTest
Error: Could not find or load main class JdbcOracleConnectionTest
Caused by: java.lang.ClassNotFoundException: JdbcOracleConnectionTest

Want to run a java program in GCP cloud shell to connect Oracle 19c and the java version there is OpenJDK 11. Always got ClassNotFoundException.

Tried the same OpenJDK (from RedHat) in a Windows 10 laptop and got the same error.

Then I tried JDK 11 (from Oracle) in Windows 10, it worked fine.

Because I have to use OpenJDK in GCP eventually, how can I solve this issue?

Very simple Java code -

import java.sql.*;

class JdbcOracleConnectTest {
    public static void main(String args[]) {
        try {
            // step1 load the driver class
            Class.forName("oracle.jdbc.driver.OracleDriver");

            // step2 create the connection object
            Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "system", "oracle");

            // step3 create the statement object
            Statement stmt = con.createStatement();

            // step4 execute query
            ResultSet rs = stmt.executeQuery("select * from emp");
            while (rs.next())
                System.out.println(rs.getInt(1) + "  " + rs.getString(2) + "  " + rs.getString(3));

            // step5 close the connection object
            con.close();
        } catch (Exception e) {
            System.out.println(e);
        }
    }
}
C:\app\jdk11\bin\java -version
openjdk version "11.0.2" 2019-01-15
OpenJDK Runtime Environment 18.9 (build 11.0.2+9)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode)

"ojdbc10.jar" is from Oracle.

C:\app\jdk11\bin\java -cp C:\temp\ojdbc10.jar JdbcOracleConnectionTest
Error: Could not find or load main class JdbcOracleConnectionTest
Caused by: java.lang.ClassNotFoundException: JdbcOracleConnectionTest

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦太阳 2025-01-27 13:16:04

更改您的代码行:

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

对此:

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

请参阅Oracle文档,即 JDBC开发人员指南

但是,您不再需要明确加载[JDBC]驱动程序类,因此您实际上可以完全删除该行。请参阅此问题:
)不再需要吗?

class.forname( jdbc_driver 连接URL已更改。请参阅 oracle noreferrer“> oracle数据库xe快速启动。尝试以下内容:

jdbc:oracle:thin:@//localhost:1521/xe

Change this line of your code:

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

to this:

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

Refer to Oracle documentation, namely JDBC Developer's Guide

However, you no longer need to explicitly load the [JDBC] driver class so you can actually remove that line altogether. Refer to this SO question:
Class.forName(JDBC_DRIVER) no longer needed?

Also, the format of the connection URL has changed. Refer to Oracle Database XE Quick Start. Try the following:

jdbc:oracle:thin:@//localhost:1521/xe
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文