使用tomcat maven插件运行项目的时候,maven插件会把所以的依赖都添加进来,即使是scope=compile的,所以我运行项目的时候碰到这个问题:
have different Class objects for the type javax/el/ExpressionFactory used in the signature
就是jar包里面的类冲突了,我们的maven依赖里面不应该system run time相关的jar包,否者就会和tomcat插件里的已有的冲突了。
问题查找,看下是引用哪个jar包把el-api这个jar包引进来的,
查看pom文件的dependency hierarchy视图。找到是hibernate-core依赖的javax.enterprise依赖了javax.el-api,我们手动将javax.enterprise依赖进来,然后使用exclusions去掉javax.el-api的依赖。问题得到解决。
have different Class objects for the type javax/el/ExpressionFactory used in the signature
就是jar包里面的类冲突了,我们的maven依赖里面不应该system run time相关的jar包,否者就会和tomcat插件里的已有的冲突了。
问题查找,看下是引用哪个jar包把el-api这个jar包引进来的,
查看pom文件的dependency hierarchy视图。找到是hibernate-core依赖的javax.enterprise依赖了javax.el-api,我们手动将javax.enterprise依赖进来,然后使用exclusions去掉javax.el-api的依赖。问题得到解决。
<dependency>
<groupId>javax.enterprise</groupId>
<artifactId>cdi-api</artifactId>
<version>1.2</version>
<exclusions>
<exclusion>
<groupId>javax.el</groupId>
<artifactId>javax.el-api</artifactId>
</exclusion>
</exclusions>
</dependency>