Tomcat 7 java.lang.NoClassDefFoundError:javax/el/ELManager [复制]

参见英文答案 > Why am I getting a NoClassDefFoundError in Java?                                    20个
我想将我的应用程序部署到版本7中的tomcat,我得到以下异常java.lang.NoClassDefFoundError:javax / el / ELManager
但是,如果我尝试将此应用程序部署到tomcat版本8,它可以正常工作.

你有任何想法如何解决这个问题?

为什么我要从tomcat 8切换到7?在测试环境中,repo中的tomcat 8和服务器上的tomcat7.

的pom.xml

web.xml中

最佳答案
如果您想在生产中运行Tomcat 7上的webapp,那么您应该在测试环境中使用Tomcat 7.

发生的事情是您不小心引入了对EL 3.0 API的依赖…并将其包含在您的POM文件中.它在Tomcat 8上工作.但在Tomcat 7上,该平台支持EL 2.1.因此,当您的应用程序尝试加载javax.el.E​​LManager的类文件时…它会失败.

解决方案:

>将您的生产平台升级到Tomcat 8
>针对Tomcat 7进行测试,并消除新代码中代码库中的任何依赖关系.

Apache Tomcat Versions页面列出了每个主要版本Tomcat的各种规范版本.

Is there no possibility to solve this issue?

如果您准备“屠宰”Tomcat 7服务器,您可能可以用更新的实现替换EL实现.但我不会尝试,因为1)它可能根本不起作用,2)结果可能难以维持.并且您有责任为您的运营,质量保证和/或安全团队提供中风!

Is there no possibility to solve this issue with changes in the application?

当然.更改您的POM以摆脱这个:


                

相关文章

这篇文章主要介绍了spring的事务传播属性REQUIRED_NESTED的原...
今天小编给大家分享的是一文解析spring中事务的传播机制,相...
这篇文章主要介绍了SpringCloudAlibaba和SpringCloud有什么区...
本篇文章和大家了解一下SpringCloud整合XXL-Job的几个步骤。...
本篇文章和大家了解一下Spring延迟初始化会遇到什么问题。有...
这篇文章主要介绍了怎么使用Spring提供的不同缓存注解实现缓...