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

Java 17环境下引入java.sql.Date需添加什么Maven依赖?

解决方案

在pom.xml的依赖节点中添加以下配置即可解决报错:

<dependency>
    <groupId>org.apache.geronimo.specs</groupId>
    <artifactId>geronimo-jdbc_4.2_spec</artifactId>
    <version>1.0</version>
    <scope>provided</scope>
</dependency>

对应场景说明

匹配的问题上下文:

  • 开发环境使用Java 17,生产运行环境为Java 8
  • 仅接受直接引入Maven依赖的方案,不做Java 9模块相关配置调整
  • 不修改现有开发、生产环境的JDK版本
  • 运行时抛出如下错误栈:
java.lang.NoClassDefFoundError: java/sql/Date
    at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:445)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:587)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)

依赖作用逻辑

  • 该依赖内置JDBC 4.2版本(与Java 8内置JDBC版本完全对齐)下java.sql包所有标准API的类定义,编译阶段会优先加载该jar包中的类生成字节码,避免引用Java 17模块化后的类路径索引,导致运行时在Java 8环境下定位类失败
  • 依赖作用域设置为provided,仅在编译、测试阶段生效,不会被打包进最终交付产物,生产运行时会直接调用Java 8内置的java.sql核心类,不会产生类冲突
  • 引入后直接重新构建项目即可生效,不需要额外修改编译插件配置、模块描述文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 11:06:24