记一次错误。
今天使用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的加载顺序的机制。