You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java8升级Java11遇OracleConnectionBuilderImpl与ConnectionBuilder兼容问题

问题分析与解决方案

编译错误详情

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project <project>: Compilation failure
[ERROR] <project>.java:[15,8] createConnectionBuilder() in oracle.jdbc.datasource.impl.OracleDataSource cannot implement createConnectionBuilder() in javax.sql.DataSource
[ERROR]   return type oracle.jdbc.datasource.impl.OracleConnectionBuilderImpl is not compatible with java.sql.ConnectionBuilder

问题根源

Java 11 对 javax.sql.DataSource 接口做了扩展,新增了 createConnectionBuilder() 方法,要求返回 java.sql.ConnectionBuilder 类型。而部分 ojdbc8 版本中,OracleDataSource 实现的该方法返回的是 Oracle 自定义的 OracleConnectionBuilderImpl,如果这个类未实现标准的 java.sql.ConnectionBuilder 接口,就会触发编译时的类型兼容错误。

解决方案

1. 排查并清理依赖冲突

执行 mvn dependency:tree 命令,检查项目依赖树:

  • 确认是否混入旧版本 ojdbc(如 ojdbc6、ojdbc7)
  • 检查是否有第三方依赖间接引入旧版 Oracle JDBC 组件
  • 核对 javax.sql 相关依赖版本是否统一

找到冲突依赖后,在对应 dependency 节点中通过 <exclusions> 排除旧版本组件,确保仅保留指定的 ojdbc8:23.3.0.23.09。

2. 明确配置 Maven 编译插件的 Java 版本

确保 maven-compiler-plugin 明确指定编译的 source 和 target 为 Java 11,避免编译规则兼容问题:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.1</version>
    <configuration>
        <source>11</source>
        <target>11</target>
        <encoding>UTF-8</encoding>
    </configuration>
</plugin>

3. 重写 createConnectionBuilder() 方法强制类型兼容

如果上述步骤无效,直接在自定义的 MtDataSource 类中重写该方法,明确返回标准的 java.sql.ConnectionBuilder 接口类型:

import oracle.jdbc.pool.OracleDataSource;
import java.sql.ConnectionBuilder;
import java.sql.SQLException;

public class MtDataSource extends OracleDataSource {

    public MtDataSource() throws SQLException {
        super();
    }

    @Override
    public ConnectionBuilder createConnectionBuilder() {
        return super.createConnectionBuilder();
    }
}

4. 验证 Oracle JDBC 依赖完整性

确保项目引入的 ojdbc8 依赖包含完整适配类,必要时补充引入辅助依赖(需使用 Oracle 官方 Maven 仓库):

<dependency>
    <groupId>com.oracle.database.jdbc</groupId>
    <artifactId>ojdbc8</artifactId>
    <version>23.3.0.23.09</version>
</dependency>
<dependency>
    <groupId>com.oracle.database.jdbc</groupId>
    <artifactId>ucp</artifactId>
    <version>23.3.0.23.09</version>
</dependency>

内容的提问来源于stack exchange,提问作者Tapialj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 00:07:22