问题
今天启动项目测试时,发送消息使用el表达式报错:java.lang.NoClassDefFoundError: javax/el/ELContext
一开始怀疑是idea又发疯了,重新maven->reimport也不行。
el包的pom.xml项目配置如下:
<!-- EL表达式 开始-->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<version>8.0.20</version>
<scope>provided</scope>
</dependency>
<!-- EL表达式 结束-->
因为线上用的是Tomcat,已包含el包,所以需要设置provided,打包时去掉,以防冲突。但是本人用的是jetty,因此需要去掉这个scope或者设为compile。
但是查了下scope具体含义,如下:
compile(默认)
含义:compile 是默认值,如果没有指定 scope 值,该元素的默认值为 compile。被依赖项目需要参与到当前项目的编译,测试,打包,运行等阶段。打包的时候通常会包含被依赖项目。
provided
含义:被依赖项目理论上可以参与编译、测试、运行等阶段,相当于compile,但是再打包阶段做了exclude的动作。
适用场景:例如, 如果我们在开发一个web 应用&#x