具体问题重现:
在做storm 整合spring-boot的时候,发现spring-boot的父依赖中引入了json-simple这个jar包,版本为1.1.1,而storm核心包storm-core的依赖的simple-json版本为1.1,这就导致了启动storm时候报ClassNotFound错误。
由于1.1.1的json-simple在spring-boot中是父级的父级引入的,导致pom中使用<exclusion>没有效果:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.5.RELEASE</version>
<exclusion>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
</exclusion>
<relativePath /> <!-- lookup parent from repository -->
</parent>
解决方法:
因为在spring-boot在properties中是使用properties指定json-simple的版本的,因此在项目的pom中,通过properties属性指定json-simple版本,覆盖spring-boot依赖的版本
<properties>
<simple-json.version>1.1</simple-json.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
<!-- 依赖版本 -->
<mybatis.version>3.3.1</mybatis.version>
<mybatis.spring.version>1.2.4</mybatis.spring.version>
</properties>