java.lang.NoClassDefFoundError: Could not initialize class org.apache.jasper.el.ELContextImpl

启动tomcat报错:

java.lang.NoClassDefFoundError: Could not initialize class org.apache.jasper.el.ELContextImpl
java.lang.NoClassDefFoundError: Could not initialize class org.apache.jsp.index_jsp

等错误

开始以为是缺少jar或者jar冲突。运行页面只要有EL表达式的都报Could not initialize class org.apache.jasper.el.ELContextImpl这个错误

然后就继续修改pom.xml ,都知道tomcat自身有servler等jar包

我使用的是springboot,我用的外部tomcat,所以要在pom排除springboot自身的tomcat,然后需要添加servler等jar包。


		
		
			javax.servlet
			javax.servlet-api
			3.1.0
			provided
		
		
		
		
			jstl
			jstl
			1.2
		
		
			taglibs
			standard
			1.1.2
		

jar冲突的几率很大。

各种修改之后,但实际并不是这里的和tomcat的jar冲突,但凭经验讲,肯定是哪里的jar和tomcat的冲突了

于是大工程来了,每个pom依赖都试,删除再试,最后找到了。

问题在activiti工作流里面引用的jar冲突了。不管是springboot还是普通springmvc项目,如果用activiti6.x版本都会用到juel-spi这个东西

查找过程:eclipse开发工具  ctrl+鼠标点击activiti那个依赖,相关activiti依赖的页面,

java.lang.NoClassDefFoundError: Could not initialize class org.apache.jasper.el.ELContextImpl_第1张图片

再ctrl+鼠标点击engine

java.lang.NoClassDefFoundError: Could not initialize class org.apache.jasper.el.ELContextImpl_第2张图片

最后点击上图圈出来的,就看到了引入了

java.lang.NoClassDefFoundError: Could not initialize class org.apache.jasper.el.ELContextImpl_第3张图片

这里就不再进去点击了,有兴趣的再点击可以进去看看,里面引入了很多很多东西

查看引入pom依赖的方式,也可以直接按一下方式查看,pom文件点击红色框按钮菜单栏

java.lang.NoClassDefFoundError: Could not initialize class org.apache.jasper.el.ELContextImpl_第4张图片

 

第一种解决方式:tomcat换成7和activiti换成5.x

第二种:排除juel-spi这个和tomcat自身的jar的冲突

我用的第二种:


		
			org.activiti
			activiti-spring-boot-starter-basic
			6.0.0
			
				
				
					de.odysseus.juel
					juel-spi
				
			
		

启动项目,成功。不报错了。正常访问。累死了~这个报错毫无任何和activiti关联的征兆

出现这个的问题也不排除其他的依赖会和tomcat冲突报这个错。我的是activiti引起的。

你可能感兴趣的:(java,tomcat,activiti,spring)