JDBC Driver Does Not Exist报错:连接Oracle时oracle.jdbc.driver包不存在如何解决
问题解决方法
错误原因1:编译命令配置错误
- 你执行的编译命令为
javac -classpath ojdbc8.jar Connect.java,首先要确认当前命令行工作目录下确实存在ojdbc8.jar文件,可执行ls(Linux/macOS)或dir(Windows)命令核对。如果jar包不在当前目录,需要填写完整的绝对路径,示例:# Linux/macOS 示例 javac -classpath /data/drivers/ojdbc8.jar Class1.java # Windows 示例 javac -classpath C:\drivers\ojdbc8.jar Class1.java - 注意你提供的代码中public类名为
Class1,对应的Java文件名必须为Class1.java,不能命名为Connect.java,否则会触发编译错误。
错误原因2:驱动类包名过时
你代码中使用的oracle.jdbc.driver.OracleDriver是旧版本Oracle JDBC驱动的类路径,ojdbc8版本中该类已经迁移到oracle.jdbc包下,且JDBC 4.0及以上版本无需手动注册驱动,只要ojdbc8在类路径下,DriverManager会自动扫描加载驱动,直接删除DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());这行代码即可。
如果需要手动注册驱动,修改为以下写法:
DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
修正后完整代码示例
import java.sql.*; public class Class1 { public static void main (String args []) throws SQLException { // 连接到数据库 Connection conn = DriverManager.getConnection ("jdbc:oracle:thin:@myhostname:1521:orcl", "myUsername", "myPassword"); // 创建Statement Statement stmt = conn.createStatement (); // 查询EMP表的ENAME列 ResultSet rset = stmt.executeQuery ("select ENAME from EMP"); // 遍历结果打印员工姓名 while (rset.next ()) System.out.println (rset.getString (1)); conn.close(); // 操作完成后必须关闭连接 } }
内容的提问来源于stack exchange,提问作者Inexorable
相关产品推荐
相关产品推荐

