无法部署应用目录 [D:\Tomcat\apache-tomcat-9.0.44\webapps\ROOT]java.lang.IllegalStateException: 启动子级时出错

            起因是刚开始导入一个web项目,没有导入Tomcat的jar包,导致找不到javax.servlet.http 和 javax.servlet.jsp,看了下网上的建议,将Tomcat7.0\lib下的el-api.jar、jsp-api.jar这两个jar包放到Java\jdk1.8.0_131\jre\lib\ext目录下,导入jar后没有报错了。还有一个报错,是因为从Tomcat8转到Tomcat7,需要修改一个配置文件,在项目下.settings\org.eclipse.wst.common.project.facet.core.xml文件下Tomcat的那行配置删除。

          项目是没有错误之后,在Tomcat上启动,就开始报下面的错误:


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

         看了很多,都说是使用Activiti时,关于Could not initialize class org.apache.jasper.el.ELContextImpl问题,是由于jar包冲突导致的,但是我没有导入Activiti的jar包,

我开始寻找问题,看见有的说是Tomcat版本和jdk版本不一致导致的,我又下载了Tomcat的8.5和9.0版本。但是发现问题没有丝毫解决,甚至更多了,出现了下面的问题:

13-Mar-2021 19:17:23.253 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[D:\Tomcat\apache-tomcat-9.0.44\webapps\manager]的部署已在[47]毫秒内完成
13-Mar-2021 19:17:23.269 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [D:\Tomcat\apache-tomcat-9.0.44\webapps\ROOT]
13-Mar-2021 19:17:23.284 严重 [main] org.apache.catalina.startup.HostConfig.deployDirectory 无法部署应用目录 [D:\Tomcat\apache-tomcat-9.0.44\webapps\ROOT]
	java.lang.IllegalStateException: 启动子级时出错

        发现虽然本地启动会报错,但是Tomcat服务器可以启动,不过http://localhost:8080/访问会出现404的报错,搜遍网上也没找到原因,最后还是切回Tomcat7.0,

发现没有报上面的错误,但是在http://localhost:8080/访问会出现500的报错,报的是这个错误:

 javax.servlet.ServletException: java.lang.NoClassDefFoundError

然后参考了这个文章:https://blog.csdn.net/qq_39188306/article/details/89672188

解决办法: 

1、进入你tomcat安装目录:我的是D:\Tomcat7.0\lib,找到el-api.jar包;

2、找到你安装使用的JDK版本目录,我的是在C:\Program Files\Java\jdk1.8.0_131\jre\lib\ext目录下;

3、将tomcat中的el-api.jar包拷贝到JDK安装目录下的jre/lib/ext目录下(如果已经存在,请覆盖);

         按这样的方法解决了,但是总觉得不对劲,这不是我刚开始导入的Tomcat7.0\lib下的el-api.jar、jsp-api.jar这两个包流程吗?

         然后我将Java\jdk1.8.0_131\jre\lib\ext目录下el-api.jar、jsp-api.jar和servlet-api.jar三个jar包删除,然后运行发现问题完美解决,然后又使用Tomcat的8.5和9.0版本

发现都可以正常访问http://localhost:8080/

 

总结:不要随便向Java\jdk1.8.0_131\jre\lib\ext目录下放 jar包,容易导致Tomcat服务器启动时出现jar冲突,出现java.lang.NoClassDefFoundError: Could not initialize class org.apache.jasper.el.ELContextImpl的异常

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