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

33 篇文章 0 订阅
30 篇文章 1 订阅

启动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包。

<!-- <scope>provided</scope>解决tomcat部署时与tomcat本身的jar冲突 -->
		<!--引入Servlet开始 -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<version>3.1.0</version>
			<scope>provided</scope>
		</dependency>
		<!--引入Servlet结束 -->
		<!--引入JSTL开始 -->
		<dependency>
			<groupId>jstl</groupId>
			<artifactId>jstl</artifactId>
			<version>1.2</version>
		</dependency>
		<dependency>
			<groupId>taglibs</groupId>
			<artifactId>standard</artifactId>
			<version>1.1.2</version>
		</dependency>

jar冲突的几率很大。

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

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

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

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

再ctrl+鼠标点击engine

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

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

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

 

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

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

我用的第二种:

<!-- activiti -->
		<dependency>
			<groupId>org.activiti</groupId>
			<artifactId>activiti-spring-boot-starter-basic</artifactId>
			<version>6.0.0</version>
			<exclusions>
				<!-- 排除juel-spi,会和tomcat下的servlet、jsp等jar有冲突 -->
				<exclusion>
					<groupId>de.odysseus.juel</groupId>
					<artifactId>juel-spi</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

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

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

java.lang.NoClassDefFoundError: Could not initialize class异常通常是由于类的静态初始化块或静态变量的初始化过程中发生了异常导致的。这个异常表示在类加载过程中,虚拟机无法找到或初始化指定的类。 对于引用中的异常"java.lang.NoClassDefFoundError: Could not initialize class xxx",其中的"xxx"是指具体的类名。这个异常的原因可能是以下几种情况之一: 1. 缺少相关的依赖库或jar包。 2. 类的静态初始化块或静态变量的初始化过程中发生了异常。 3. 类的初始化过程中发生了其他异常,例如访问权限问题或反射异常等。 解决这个异常的方法可以尝试以下几种方式: 1. 检查相关的依赖库或jar包是否存在,并确保它们的版本和路径正确。 2. 检查类的静态初始化块或静态变量的初始化过程中是否有异常抛出,并修复这些异常。 3. 检查类的初始化过程中是否有其他异常抛出,并修复这些异常。 4. 检查类的访问权限是否正确,并确保没有其他限制导致类无法被初始化。 5. 如果使用了反射相关的代码,检查反射相关的异常,并修复这些异常。 以下是一个示例代码,演示了如何处理java.lang.NoClassDefFoundError异常: ```java try { // 尝试初始化类 Class.forName("org.mockito.Mockito"); } catch (ClassNotFoundException e) { // 类未找到异常 e.printStackTrace(); } catch (ExceptionInInitializerError e) { // 类的静态初始化过程中发生了异常 e.printStackTrace(); } catch (Throwable t) { // 其他异常 t.printStackTrace(); } ```
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值