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

Spring Boot整合pi4j启动报错javax.sql.DataSource找不到问题求助

错误根因排查及解决办法

1. 确认Spring Boot版本与命名空间适配

  • 如果你使用的是Spring Boot 3.x版本,该版本全量切换到了jakarta命名空间,javax.sql.DataSource已被废弃改为jakarta.sql.DataSource,如果你的pi4j或其他依赖仍在使用javax规范包,就会触发类找不到错误:
    • 方案1:降级Spring Boot到2.7.x稳定版本,该版本仍支持javax命名空间,适配绝大多数旧版pi4j组件
    • 方案2:升级pi4j到支持jakarta规范的适配版本,同时检查所有第三方依赖是否已完成jakarta迁移

2. 检查JDBC相关依赖是否完整

javax.sql.DataSource属于JDBC规范类,你需要确认pom.xml中已经引入对应的启动器:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- 如使用特定数据库,还需引入对应驱动依赖 -->

如果之前的依赖配置中错误排除了spring-jdbc相关包,也需要把排除规则删掉。

3. 修正module-info.java配置

由于你使用了Java模块系统,必须在module-info.java中显式声明依赖JDBC模块:

module 你的模块名 {
    // 必须添加这行引入javax.sql所在的基础模块
    requires java.sql;
    // 如用到Spring JDBC还需添加
    requires spring.jdbc;
    // 其他原有配置保持不变
}

4. 无数据库需求优先用本方案:关闭DataSource自动配置

如果你的pi4j项目根本不需要用到数据库功能,可以直接关闭Spring Boot的DataSource自动配置,避免触发不必要的类加载逻辑,这是最快解决问题的方案:
在启动类的@SpringBootApplication注解上添加排除规则:

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration;
import org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration;

@SpringBootApplication(exclude = {
    DataSourceAutoConfiguration.class,
    DataSourceTransactionManagerAutoConfiguration.class,
    JdbcTemplateAutoConfiguration.class
})
public class 你的启动类名 {
    public static void main(String[] args) {
        SpringApplication.run(你的启动类名.class, args);
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 05:36:08