| JDK 版本 | 推薦驅動文件 | 備註 |
| JDK 1.1.x | classes111.zip + nls_charset11.zip | 極舊,已淘汰 |
| JDK 1.2.x / 1.3 | classes12.zip + nls_charset12.zip | 舊版項目維護 |
| JDK 1.4 / 1.5 / 1.6 | ojdbc14.jar + nls_charset12.zip | 廣泛使用,文件名含 14 表示 JDBC 3.0 規範 |
| JDK 1.6 / 1.7 | ojdbc6.jar | JDBC 4.0,支持自動加載驅動 |
| JDK 1.8+ | ojdbc8.jar / ojdbc10.jar | JDBC 4.2/4.3,現代項目首選 |
獲取途徑:Oracle 官網下載頁、Maven 中央倉庫(com.oracle.database.jdbc:ojdbc8)、或 Oracle 安裝目錄 $ORACLE_HOME/jdbc/lib/。
方法一:配置系統環境變量(全局生效,不推薦項目級開發)
- 下載對應
ojdbcX.jar 並放置固定目錄(如 D:\jdbc\ojdbc8.jar)。
- 右鍵「此電腦」→ 屬性 → 高級系統設置 → 環境變量。
- 系統變量
CLASSPATH 追加:.;D:\jdbc\ojdbc8.jar(首個 . 代表當前目錄)。
- 系統變量
PATH 確保包含 %ORACLE_HOME%\bin(若需 OCI/Thin 混合模式)。
- 重啟 Eclipse,新建 Java 項目即可識別驅動。
缺點:機器遷移麻煩、版本衝突風險、團隊協作不一致。生產項目請使用方法二/三。
方法二:Eclipse 全局用戶庫(推薦:一次配置,多項目復用)
- 菜單 Window → Preferences(macOS: Eclipse → Preferences)。
- 展開 Java → Build Path → User Libraries。
- 點擊 New...,輸入庫名稱(如
Oracle JDBC 19c),確定。
- 選中剛建好的庫,點擊右側 Add External JARs...,選中
ojdbc8.jar(及可選的 orai18n.jar 等)。
- 點擊 Apply and Close。

在項目中引用用戶庫
- 右鍵項目 → Build Path → Configure Build Path。
- 選 Libraries 標籤 → Add Library... → User Library → Next。
- 勾選
Oracle JDBC 19c → Finish → Apply and Close。
方法三:Maven/Gradle 依賴管理(現代標準,強烈推薦)
Maven (pom.xml)
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<version>23.4.0.0</version> <!-- 查詢中央倉庫最新版 -->
</dependency>
若公司內網有 Nexus 私服,配置 mirror 即可。Eclipse 右鍵項目 → Maven → Update Project 自動下載到 Maven Dependencies 庫。
Gradle (build.gradle)
implementation 'com.oracle.database.jdbc:ojdbc8:23.4.0.0'
代碼中加載驅動與獲取連接
JDBC 4.0+ (JDK 6+) 自動加載,無需 Class.forName
// 直接獲取連接,驅動自動發現(META-INF/services/java.sql.Driver)
String url = "jdbc:oracle:thin:@//localhost:1521/ORCLPDB1"; // 易連接語法
String user = "app_user";
String pwd = "secure_password";
try (Connection conn = DriverManager.getConnection(url, user, pwd)) {
System.out.println("連接成功: " + conn.getMetaData().getURL());
// 業務操作...
} catch (SQLException e) {
e.printStackTrace();
}
舊版驅動需顯式加載
// ojdbc14.jar 等 JDBC 3.0 驅動
Class.forName("oracle.jdbc.driver.OracleDriver"); // 或 oracle.jdbc.OracleDriver
Connection conn = DriverManager.getConnection(url, user, pwd);
連接池整合(生產必備)
<!-- Maven 依賴 -->
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>5.1.0</version>
</dependency>
// HikariCP 配置示例
HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:oracle:thin:@//localhost:1521/ORCLPDB1");
config.setUsername("app_user");
config.setPassword("secure_password");
config.setMaximumPoolSize(20);
config.setMinimumIdle(5);
config.setConnectionTimeout(30000);
config.setIdleTimeout(600000);
config.setMaxLifetime(1800000);
config.addDataSourceProperty("oracle.net.CONNECT_TIMEOUT", "5000");
config.addDataSourceProperty("oracle.jdbc.ReadTimeout", "30000");
DataSource ds = new HikariDataSource(config);
// 使用 ds.getConnection() 替代 DriverManager
常見錯誤與排查清單
| 錯誤現象 | 可能原因 | 解決方案 |
ClassNotFoundException: oracle.jdbc.driver.OracleDriver | 驅動包未加入構建路徑 | 檢查 User Library / Maven Dependencies 是否包含 ojdbc.jar |
SQLException: Io exception: The Network Adapter could not establish the connection | IP/端口/SID 錯誤、防火牆、監聽器未啟動 | tnsping 測試、telnet 端口、檢查 listener.ora |
ORA-28040: No matching authentication protocol | JDK 8u161+ 默認禁用弱加密,數據庫舊版本不支持 | 驅動升級到 ojdbc8+,或數據庫設置 SQLNET.ALLOWED_LOGON_VERSION_SERVER=8 |
| 中文亂碼 | 字符集不匹配 | 確保數據庫 NLS_LANG、JVM file.encoding、URL 參數一致(建議全鏈路 UTF-8/AL32UTF8) |
| 驅動版本衝突 | 類路徑存在多版本 ojdbc.jar | Maven dependency:tree 排查,exclusion 排除舊版 |
總結
- 選對驅動版本:JDK 8+ 用
ojdbc8.jar,Maven 坐標 com.oracle.database.jdbc:ojdbc8。
- 用戶庫/構建工具管理依賴:避免硬編碼系統 CLASSPATH。
- JDBC 4.0+ 免 Class.forName,直接
DriverManager.getConnection。
- 生產必上連接池:HikariCP 為首選。
- 網絡/字符集/加密協議 三大塊是連接失敗高發區,按清單排查。
- 上一篇文章: Java wait/notify/notifyAll 深度解析:從原理到生產者消費者模式實戰
- 下一篇文章: Java 虛擬機架構深度解析:類加載、運行時數據區、執行引擎全景圖
Copyright ©
程式碼之家 All Rights Reserved