Maven 整合Struts2遇到的 “Unable to compile class for JSP”问题解决方法

按照正常步骤在Maven下整合Struts2,控制台启动正常,没有报错,但是在浏览器访问URL时发现如下问题,搞了整整一下午,终于找到问题所在,心痛时间啊!

错误类型如下:浏览器报错:

Maven 整合Struts2遇到的 “Unable to compile class for JSP”问题解决方法Maven 整合Struts2遇到的 “Unable to compile class for JSP”问题解决方法

Struts2开发模式下报错:

Maven 整合Struts2遇到的 “Unable to compile class for JSP”问题解决方法

控制台报错:

 

10月 06, 2018 9:09:27 下午 org.apache.jasper.compiler.JDTCompiler$1 findType

严重: Compilation error

org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException

at org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader.<init>(ClassFileReader.java:342)

at org.apache.jasper.compiler.JDTCompiler$1.findType(JDTCompiler.java:206)

at org.apache.jasper.compiler.JDTCompiler$1.findType(JDTCompiler.java:163)

at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.askForType(LookupEnvironment.java:96)

at org.eclipse.jdt.internal.compiler.lookup.UnresolvedReferenceBinding.resolve(UnresolvedReferenceBinding.java:49)

………………….

10月 06, 2018 9:09:27 下午 org.apache.catalina.core.ApplicationDispatcher invoke

严重: Servlet.service() for servlet jsp threw exception

org.apache.jasper.JasperException: Unable to compile class for JSP:

An error occurred at line: 1 in the generated java file

The type java.io.ObjectInputStream cannot be resolved. It is indirectly referenced from required .class files

An error occurred at line: 1 in the generated java file

The type java.lang.Class cannot be resolved. It is indirectly referenced from required .class files

An error occurred at line: 23 in the generated java file

The method getName() is undefined for the type Class

Stacktrace:

at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:92)

………….

其实最核心的错误原因是:compilation error  且   Unable to compile class for JSP:

 

通过全网查找,最终定位问题的原因是:tomcat版本过低或者jdk的版本过高所致的!所以去升级本地安装的tomcat版本,升级后来发现,这是一个巨大的错误,没有作用!原因是:maven中使用的tomcat运行方式是jar包的运行方式,与本地安装的tomcat服务器无关。Maven命令: mvn tomcat:run 默认的执行的tomcat版本是6.0版本的tomcat,所以以现在的大部分运行的jdk版本来说的话,肯定会存在不兼容的问题。启动mvn tomcat:run之后可查看maven运行tomcat版本,如下:

 

Maven 整合Struts2遇到的 “Unable to compile class for JSP”问题解决方法

 

 

最终的解决方式是通过修改maven配置的方式解决:

 

1.在pom.xml文件中增加如下插件配置:              

<plugin>
		<groupId>org.apache.tomcat.maven</groupId>
		<artifactId>tomcat7-maven-plugin</artifactId>
		<version>2.2</version>
</plugin>

 

2.运行是命令选择: mvn tomcat7:run

 

 

Maven 整合Struts2遇到的 “Unable to compile class for JSP”问题解决方法

Maven 整合Struts2遇到的 “Unable to compile class for JSP”问题解决方法

 

 

再在浏览器中访问,问题完美解决!!!

其实最核心的原因是   ::tomcat版本太低或者 jdk版本太高!   版本问题坑死人啊!