启动报错java.lang.NoClassDefFoundError: org/antlr/v4/runtime/CharStream

记一次错误。
今天使用shardingjdbc进行分表时,导入shardingjdbc的依赖后,启动报错。刚开始报错为 找不到jdbcurl。
原因在于使用配置自动生成datasource时,不能使用url而要用jdbc-url。
更改为使用dataSourceProperties.initializeDataSourceBuilder().build()方法生成datasource。

错误代码:

    @Bean(name = "sharding_data_source")
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource shardingDataSource() {
        return DataSourceBuilder.create().build();
    }

正确代码:

    @Autowired
    private DataSourceProperties dataSourceProperties;
    @Bean(name = DATA_SOURCE)
    @Primary
    public DataSource shardingDataSource() {
        return dataSourceProperties.initializeDataSourceBuilder().build();
    }
    

修改后启动报错,java.lang.NoClassDefFoundError: org/antlr/v4/runtime/CharStream。原因在于jar包的版本不对。分析依赖关系发现antlr包重复引入了,导致shardingjdbc没有使用到正确的版本号的antlr包,所以报了错。这里推荐安装maven插件Dependency Analyzer。安装后重启idea。点击pom可以解析依赖关系。
在这里插入图片描述
找到红色的依赖 右键剔除不需要的版本就可以了
在这里插入图片描述
建议学习一下maven的加载顺序的机制。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值