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

Hikari Pool初始化异常:JRE 11启动报错JDK 8运行正常如何解决?

问题诱因

这个异常本质是Oracle JDBC驱动与JDK 11的兼容性问题,和Hikari连接池本身无关,Hikari只是在初始化连接池创建数据库连接时触发了底层驱动的报错。具体触发逻辑如下:

  • 你使用的Oracle JDBC驱动版本较低(通常是ojdbc8 12.2.0.1及更早版本),这类驱动是适配JDK 8开发的,没有兼容JDK 9+对ByteBuffer实现的调整
  • 你的Oracle数据库服务端开启了高级网络选项(ANO)的加密/完整性校验,驱动在JDK 11环境下处理加密通信的NIO buffer时,扩容逻辑错误触发BufferOverflowException
  • 团队其他成员没有复现,通常是因为他们本地运行环境默认使用JDK 8,或是使用的JDBC驱动版本已经适配JDK 11,或是他们的数据库连接配置主动关闭了ANO加密。
JRE 11环境修复方案
  • 方案1:升级Oracle JDBC驱动到适配JDK 11的版本(优先推荐)
    选择19.3及以上版本的ojdbc8/ojdbc10驱动,Maven依赖参考如下:
<dependency>
    <groupId>com.oracle.database.jdbc</groupId>
    <artifactId>ojdbc8</artifactId>
    <version>19.15.0.0.1</version>
</dependency>
  • 方案2:临时关闭Oracle客户端加密校验(如果暂时无法升级驱动)
    在JDBC连接参数中新增两个配置,关闭客户端的加密协商逻辑,绕开报错的AnoCommNIO模块:
    连接串追加参数示例:
    jdbc:oracle:thin:@//host:port/service_name?oracle.net.encryption_client=REJECTED&oracle.net.crypto_checksum_client=REJECTED
    如果是Spring Boot配置文件,在数据源配置下新增:
spring:
  datasource:
    hikari:
      data-source-properties:
        oracle.net.encryption_client: REJECTED
        oracle.net.crypto_checksum_client: REJECTED
  • 方案3:检查并调整相关buffer配置
    检查是否有手动配置Hikari的socket缓冲区大小、JVM的Direct ByteBuffer限制,如果有配置可以适当调大,或删除自定义配置使用默认值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 14:18:04