validateJarFile jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class

项目环境

Maven、Tomcat7.0.27、jdk1.8.0_111

报这个错误的原因是项目中依赖 javax.servlet-api 包和Tomcat本身的包冲突了,Tomcat本身也有这个包

有人说删除项目中的servlet-api包,但删除项目中的servlet-api依赖包,项目编译都报错

解决办法是修改 dependency 的scope

   <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
    </dependency>

Scope 有5个值可以设置

compile: 缺省值,适用于所有阶段,会随着项目一起发布。 
provided: 类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。 
runtime: 只在运行时使用,如JDBC驱动,适用运行和测试阶段。 
test: 只在测试时使用,用于编译和运行测试代码。不会随项目发布。 
system: 类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。

这里设置provided就是期忘Tomcat提供这个依赖包,问题解决

util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 18

上面问题解决之后又遇到第二个问题

解决办法是 升级tomcat版本,tomcat升级到8,问题解决

原文地址:https://www.cnblogs.com/liuchao102/p/6078269.html