JAVA Drp项目实战—— Unable to compile class for JSP 一波三折

交代下背景,电脑系统是64位的,用的是64位的Tomcat,安装是32位的Myeclipse10,java环境也是32位的,Tomcat在开始启动时会报这样一个错误,“Can‘t
load IA 64-bit .dll on a AMD32-bit platform”,但是不耽误使用,最近在敲Drp项目中用到了底层接口的几个方法,这个错误导致项目不能正常运行了,所以就将64位的Tomcat换成了与java环境一样的32位的Tomcat,上面的问题就顺利解决了,于是继续自己的开发,但是当JSP页面启动时就出现了我们这篇文章要说的错误“Unableto
compile class for JSP”。

下面是这个错误的详细信息:

严重:Servlet.service() for servlet [jsp] in context with path [/drp5.9] threwexception [Unable to compile class for JSP:

An error occurred atline: [33] in the generated java file: [D:\计算机\学习课程\第三年\3.J2EE\2DRP_Java项目视频_王勇\MyDrp\drp\apache-tomcat-7.0.55-windows-x86\apache-tomcat-7.0.55\work\Catalina\localhost\drp5.9\org\apache\jsp\login_jsp.java]
The methodgetJspApplicationContext(ServletContext) is undefined for the type JspFactory

Stacktrace:] withroot cause
org.apache.jasper.JasperException:Unable to compile class for JSP:

An error occurred atline: [33] in the generated java file: [D:\计算机\学习课程\第三年\3.J2EE\2DRP_Java项目视频_王勇\MyDrp\drp\apache-tomcat-7.0.55-windows-x86\apache-tomcat-7.0.55\work\Catalina\localhost\drp5.9\org\apache\jsp\login_jsp.java]
The methodgetJspApplicationContext(ServletContext) is undefined for the type JspFactory

Stacktrace:
atorg.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:103)
atorg.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:366)
atorg.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:476)
atorg.apache.jasper.compiler.Compiler.compile(Compiler.java:378)
atorg.apache.jasper.compiler.Compiler.compile(Compiler.java:353)
atorg.apache.jasper.compiler.Compiler.compile(Compiler.java:340)
atorg.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:657)
atorg.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357)
atorg.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
atorg.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
atjavax.servlet.http.HttpServlet.service(HttpServlet.java:727)
atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
atorg.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
atcom.bjpowernode.drp.util.filter.CharsetEncodingFilter.doFilter(CharsetEncodingFilter.java:40)
atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
atorg.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
atorg.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
atorg.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
atorg.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
atorg.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
atorg.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
atorg.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
atorg.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
atorg.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
atorg.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
atorg.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2440)
atorg.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2429)
atjava.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
atjava.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
atorg.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
atjava.lang.Thread.run(Thread.java:744)

于是只好去网上查资料,有好多人都说是JSP页面代码编写错误或者说是Java环境变量没有配置好导致的,由于我之前JSP页面可以正常运行,所有就将这个说法给排除了。

接着找网上说的是Tomcat目录下的conf文件夹里的web.xml文件与项目中的web.xml文件的版本标识不一样,于是就将Tomcat里的web.xml文件改成了和项目里的一样的标识版本。就是下面这句话:

<?xmlversion="1.0" encoding="UTF-8"?>
<web-appversion="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
 <display-name></display-name>
</web-app>

然后重新启动项目的JSP页面,错误继续存在,于是在网上继续找,发现网上很多的人又说是因为项目中有比较低的版本的jar包导致的:下面是网上的原话,很多人都同意下面这种说法。

“catalina.jar、jsp-api.jar、servlet-api.jar、javax.servlet.jar、javax.servlet.jsp.jar等包和应用服务器(JBoss/Tomcat等)中的包重复且比其版本低,应用服务器在启动时会优先加载项目中的包,这样就导致和应用服务器中的其它包不匹配。可把重复的包从项目中删除,或将应用服务器下的这些包拷贝到项目中,重启服务即可。”

接下来我真的在 javaee Library中发现了javax.servlet.jar
和javax.servlet.jsp.jar jar两个包

,于是就将它们移除了,当再次启动JSP页面时这个问题依然存在。

到这里,好几个小时都已经过去,心情有点小浮躁了已经。强迫让自己冷静下来,好好将这个问题顺一顺。

由于之前JSP页面可以正常运行,排除JSP代码编写错误,唯一做的改变也只是重新换了一个Tomcat而已,Tomcat换完以后,环境变量也已经配置完成了,不可能是环境变量的问题。现在页面不能正常运行,会不会是由于之前的64位Tomcat的jar包影响了现在32位的Tomcat。于是接下来做了一个试验,重新建立一个项目,在里面建立一个新的JSP页面,可以正常访问。

最后问题解决了,解决方法很搞笑:新建立一个项目,将原来项目的类、配置文件、jsp文件、还有我们自己专门引入的jar包,也就是自己在做项目中添加或引入的文件拷贝到新建立的项目中,然后运行就成功了,问题就不会再出现了。

果然是之前的64位Tomcat的jar包影响的,虽然之前的64位的Tomcat早已经移除了,可是之前的64位的Tomcat的一些jar包仍然包含在项目中导致的。

虽然过程一波三折,不过最终问题还是解决了。

JAVA Drp项目实战—— Unable to compile class for JSP 一波三折

时间: 2024-12-16 04:19:53

JAVA Drp项目实战—— Unable to compile class for JSP 一波三折的相关文章

Java Drp项目实战——Drp知多少

是什么 Drp是Distribution Resource Planning的缩写,意思是分销资源计划,它是用来管理企业的运行于Internet上的分销网络的系统,是以商业流程优化为基础,它的核心是销售和库存总和控制.这个分销系统或者说是分销体系,它的使用者包括一个大型企业的内部.各个分公司.各级分销商等,它的作用就在于即时的掌握各地的销售信息流.财务资金流.库存信息等一些功能. 产生背景是什么 知道了Drp是什么,我们还需要了解下它的开发背景是什么,为什么要开发这样的一个系统呢. 这个原因还是

Java Drp项目实战——Web应用server

引言 Web应用server如今非常多人都在用,但是究竟什么是Web应用server呢,它与Webserver有什么关系,它与应用server又是什么关系,它是他们两种中的当中一种,还是简单的两种server的组合呢? 要搞明确这个问题,我们得先知道什么是Webserver以及什么是应用server,如今我们就来看下这两个server. Webserver Webserver(WebServer)能够解析(handles)HTTP协议.当Webserver接收到一个HTTP请求(request)

Java Drp项目实战—— 环境搭建

概要 我们要開始一个关于Java项目的开发,那么我们就须要搭建一个关于Java开发的环境,那么搭建一个Java开发环境,都须要些什么东东,又有些什么注意事项呢. 过程 我先将我搭建Java环境的软件和开发用到的软件列一下,Jdk.Jre.MyEclipse.Oracle.Tomcat.PL/SQLDeveloper.PowerDesign.Rational Rose. 在搭建Java之前,我们必须先将这些软件都安装到我们的电脑上.怎样安装我们这里就仅仅说两个,一个Java执行环境包含Jdk和Jr

Java Drp项目实战——Web应用服务器

引言 Web应用服务器现在很多人都在用,可是到底什么是Web应用服务器呢,它与Web服务器有什么关系,它与应用服务器又是什么关系,它是他们两种中的其中一种,还是简单的两种服务器的组合呢? 要搞明白这个问题,我们得先知道什么是Web服务器以及什么是应用服务器,现在我们就来看下这两个服务器. Web服务器 Web服务器(WebServer)可以解析(handles)HTTP协议.当Web服务器接收到一个HTTP请求(request),会返回一个HTTP响应(response),比如送回一个HTML页

Java Drp项目实战——Servlet

由来 在讲解Servlet之前需要先介绍一个词语CGI即Common GatewayInterface是通用网关接口的意思,它提供一个计算机程序同HTTP协议或者WWW服务的接口,也就是人机交互接口的意思.Web应用运行在服务器上,客户端的请求,刚开始,是通过CGI程序实现数据在Web上的传输,但是对于客户端做出的每个请求,必须创建CGI程序的一个新实例,这将占用大量的内存,正是为了解决这个问题,我们的Servlet应运而生. Servlet是java编写的一个应用程序,在服务器上运行,处理请求

Servlet.service() for servlet [jsp] in context with path [/Healthy_manager] threw exception [Unable to compile class for JSP] with root cause java.lang.IllegalArgumentException: Page directive: inval

严重: Servlet.service() for servlet [jsp] in context with path [/Healthy_manager] threw exception [Unable to compile class for JSP] with root causejava.lang.IllegalArgumentException: Page directive: invalid value for import    at org.apache.jasper.comp

Maven项目不能编译jsp解决方法:Unable to compile class for JSP

一.问题描述: 先交代开发环境,JDK是1.8的,IDE是eclipse 4.7,web服务器是Tomcat 9.0,maven是3.5.0,搭建好环境后输入命令tomcat:run,然后就报org.apache.jasper.JasperException: Unable to compile class for JSP错误. 二.分析问题: (1)不能编译应该是没有导入servlet-api.jsp-api包的原因,然后就在pom文件中加上servlet-api.jsp-api包,为了防止包

Unable to compile class for JSP 错误的解决过程。

刚配置好Tomcat.启动项目没问题.然后一访问就报错了. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 2012-8-18 19:17:40 org.apache.catalina.core.StandardWrapperValve invoke 严重: Servlet.service() for servlet jsp threw exception org.apac

解决Jsp运行org.apache.jasper.JasperException: Unable to compile class for JSP:问题

初学Maven就遇到困难了!!!在b站跟着视频开始接触maven来创建一个webapp项目,在jsp跳转的时候遇到一个bug,身边也没大佬带,只能自己慢慢摸索,在Maven项目中出现了报org.apache.jasper.JasperException: Unable to compile class for JSP:的问题,在网上查了很多方法来尝试解决,但天资愚钝无法理解大佬的跳转思维,后面某论坛看到解决放方案. 链接:https://blog.csdn.net/u011781521/arti