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

从Java 8升级到Java 17时javax.sql.DataSource报错求助

Java 8升级到Java 17后javax.sql.DataSource注入报错的解决方法

这个报错是因为Java 9引入模块化系统后,java.sql模块已经内置了javax.sql包,而项目中可能同时存在外部依赖提供的同名包,导致模块冲突。以下是具体解决步骤:

  • 移除重复的javax.sql依赖
    Java 17的java.sql模块已经包含javax.sql的所有内容,无需再引入单独的javax.sql-api或其他包含该包的依赖。

    • Maven项目:检查pom.xml,直接删除独立的javax.sql-api依赖;如果是其他依赖间接引入的,通过<exclusions>排除:
      <dependency>
          <groupId>你的依赖组ID</groupId>
          <artifactId>你的依赖 artifactID</artifactId>
          <exclusions>
              <exclusion>
                  <groupId>javax.sql</groupId>
                  <artifactId>javax.sql-api</artifactId>
              </exclusion>
          </exclusions>
      </dependency>
      
    • Gradle项目:在依赖中排除冲突的模块:
      dependencies {
          implementation('你的依赖') {
              exclude group: 'javax.sql', module: 'javax.sql-api'
          }
      }
      
  • 调整Eclipse模块路径配置

    1. 右键项目 → 选择Properties → 进入Java Build Path → 切换到Modules标签页
    2. 检查列表中是否有多个模块导出javax.sql包,确保仅保留java.sql模块
    3. 如果项目未使用模块化(无module-info.java),勾选Allow modules to read from unnamed module选项,消除类路径与模块路径的冲突
  • 清理重建项目

    1. 执行Project → Clean,清理项目编译缓存
    2. Maven项目右键选择Maven → Update Project;Gradle项目执行Gradle → Refresh Gradle Project
    3. 重启Eclipse,确保配置生效

内容的提问来源于stack exchange,提问作者Krishnachandran E S

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 01:07:08