Unable to compile class for JSP的解决方法
情况描述
最近在写web项目的时候,发现生产环境中,每次访问jsp页面都会返回HTTP Status 500错误。
环境
idea maven 集成的 tomcat(tomcat/6.0.29)
报错如图
问题分析
- Unable to compile class for JSP,无法编译JSP文件,缩小错误范围,应该是编译的问题
- 有可能是jdk和tomcat的版本不匹配
- pom.xml依赖与tomcat的jar包冲突
解决方法
- 修改tomcat版本
maven集成的tomcat版本为6.0.29,可以提高到7,方法如下:
在pom.xml增加插件
<!-- tomcat插件,设置了root,端口号-->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<configuration>
<!-- 指定端口 -->
<port>80</port>
<!-- 请求路径 -->
<path>/</path>
</configuration>
</plugin>
然后在Edit Configurations…—>"+"—>maven,如图修改后apply:
接着运行:
但是,发现问题并没有解决,依然报错,不过变成了NullPointerException:
2. 解决jar包冲突
只需要限制pom.xml依赖作用范围即可,如下修改
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2.1-b03</version>
<scope>provided</scope>
</dependency>
再次打开服务器,顺利访问。
总结
至此,问题基本解决。
在debug的过程中查看了很多解决的办法,最终结合以上方法顺利解决,在以后的项目中多加留意jar包冲突问题。