maven WEB项目启动没问题访问页面就报错:org.apache.jasper.JasperException: Unable to compile class for JSP

本文介绍了一种常见的Eclipse中使用Maven创建WEB项目并配置内嵌Tomcat时出现的问题:访问页面时报错无法将JSP编译为class文件。问题原因在于Tomcat版本与JDK版本不兼容,文章给出了具体的解决方案。

一、问题描述


eclipse通过maven插件创建一个WEB项目通过内嵌Tomcat加载项目,启动没问题,一访问页面就报错提示无法将jsp编译为class文件:


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

Stacktrace:
	org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:92)
	org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330)
	org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:439)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:349)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:327)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:314)
	org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:592)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)




错误的原因为:tomcat6不支持jdk1.8版本


我pom.xml文件里明明配置的是Tomcat7啊!!  怎么是tomcat6运行去了。。。


<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.fendo.sse</groupId>
  <artifactId>com</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>com Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    
       <!-- 加入ServletAPI -->
		<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>servlet-api</artifactId>
			<version>2.3</version>
			<scope>provided</scope>
		</dependency>
    
  </dependencies>
  <build>
    <finalName>com</finalName>
	<plugins>
	  <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>tomcat-maven-plugin</artifactId>
                <version>1.1</version>
                <configuration>
                    <port>8080</port>
                    <uriEncoding>UTF-8</uriEncoding>
                    <url>http://localhost:8080/manager/html</url>
                    <server>tomcat7</server>
                </configuration>
            </plugin>
	</plugins>
  </build>
</project>


注意: 如果你的版本是tomcat7-maven-plugin  2.0 的话,由于它不支持 jdk 1.8,所以把它换成 tomcat7-maven-plugin  2.2就行了。


二、解决方法


找了下发现原来是这里出了问题!!!




把它改为: tomcat7:run 就行了




异常报告 消息 org.apache.jasper.JasperException: java.lang.ClassNotFoundException: org.apache.jsp.index_jsp 描述 服务器遇到一个意外的情况,阻止它完成请求。 例外情况 org.apache.jasper.JasperException: org.apache.jasper.JasperException: java.lang.ClassNotFoundException: org.apache.jsp.index_jsp org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:589) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:425) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:379) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:327) javax.servlet.http.HttpServlet.service(HttpServlet.java:764) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) 根本原因。 org.apache.jasper.JasperException: java.lang.ClassNotFoundException: org.apache.jsp.index_jsp org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:197) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:413) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:379) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:327) javax.servlet.http.HttpServlet.service(HttpServlet.java:764) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) 根本原因。 java.lang.ClassNotFoundException: org.apache.jsp.index_jsp java.net.URLClassLoader.findClass(URLClassLoader.java:381) org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:129) org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:58) org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:192) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:413) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:379) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:327) javax.servlet.http.HttpServlet.service(HttpServlet.java:764) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ):注意 主要问题的全部 stack 信息可以在 server logs 里查看
08-02
org.apache.jasper.JasperException: org.apache.jasper.JasperException: java.lang.ClassNotFoundException: org.apache.jsp.webapp.guestbook_jsp org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:553) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:402) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:357) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:308) jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) 根本原因。 org.apache.jasper.JasperException: java.lang.ClassNotFoundException: org.apache.jsp.webapp.guestbook_jsp org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:175) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:390) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:357) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:308) jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) 根本原因。 java.lang.ClassNotFoundException: org.apache.jsp.webapp.guestbook_jsp java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:445) org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:119) org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:56) org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:171) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:390) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:357) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:308) jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
06-07
HTTP Status 500 - Unable to compile class for JSP type Exception report message Unable to compile class for JSP description The server encountered an internal error that prevented it from fulfilling this request. exception org.apache.jasper.JasperException: Unable to compile class for JSP org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:616) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:368) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329) javax.servlet.http.HttpServlet.service(HttpServlet.java:729) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) root cause javax.el.ELException: Unable to find ExpressionFactory of type: # Licensed to the Apache Software Foundation (ASF) under one or more javax.el.ExpressionFactory.newInstance(ExpressionFactory.java:152) javax.el.ExpressionFactory.newInstance(ExpressionFactory.java:91) org.apache.jasper.compiler.PageInfo.<init>(PageInfo.java:80) org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:115) org.apache.jasper.compiler.Compiler.compile(Compiler.java:372) org.apache.jasper.compiler.Compiler.compile(Compiler.java:349) org.apache.jasper.compiler.Compiler.compile(Compiler.java:333) org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:600) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:368) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329) javax.servlet.http.HttpServlet.service(HttpServlet.java:729) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) root cause java.lang.ClassNotFoundException: # Licensed to the Apache Software Foundation (ASF) under one or more org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1274) org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1108) javax.el.ExpressionFactory.newInstance(ExpressionFactory.java:145) javax.el.ExpressionFactory.newInstance(ExpressionFactory.java:91) org.apache.jasper.compiler.PageInfo.<init>(PageInfo.java:80) org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:115) org.apache.jasper.compiler.Compiler.compile(Compiler.java:372) org.apache.jasper.compiler.Compiler.compile(Compiler.java:349) org.apache.jasper.compiler.Compiler.compile(Compiler.java:333) org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:600) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:368) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329) javax.servlet.http.HttpServlet.service(HttpServlet.java:729) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) note The full stack trace of the root cause is available in the Apache Tomcat/9.0.0.M9 logs. Apache Tomcat/9.0.0.M9
05-24
评论 22
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值