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

Java模块化环境下JDBC连接Oracle报错的解决方法

解决方案

问题根源

在Java模块化环境中,所有依赖的模块必须显式声明,而非模块化环境(类路径模式)会自动加载所需的类和依赖。你的场景中:

  1. 使用LDAP格式的JDBC URL需要依赖java.naming模块(提供JNDI相关功能),但原module-info.java未声明该依赖;
  2. Oracle JDBC驱动(ojdbc11)是模块化组件,必须显式声明依赖才能让JVM加载它。

修改module-info.java

将你的模块描述文件修改为以下内容:

module sandbox2 {
    exports dm;
    requires java.sql;
    // 声明JNDI模块依赖,支持LDAP连接
    requires java.naming;
    // 声明Oracle JDBC驱动模块依赖
    requires com.oracle.database.jdbc.ojdbc11;
}

额外说明

  • requires com.oracle.database.jdbc.ojdbc11:该模块名与Maven依赖的artifactId对应,ojdbc11从21.x版本开始正式支持Java模块化;
  • 如果仍然遇到权限相关问题(比如驱动无法访问内部API),可以在运行时添加JVM参数:
    --add-opens java.base/java.net=com.oracle.database.jdbc.ojdbc11
    
    该参数允许驱动模块访问java.net包的内部类,用于LDAP主机解析。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 22:55:07