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

 

       交代下背景。电脑系统是64位的,用的是64位的Tomcat。安装是32位的Myeclipse10java环境也是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 JspFactoryStacktrace:] 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 JspFactoryStacktrace:
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等包和应用server(JBoss/Tomcat等)中的包反复且比其版本号低。应用server在启动时会优先载入项目中的包,这样就导致和应用server中的其他包不匹配。

可把反复的包从项目中删除。或将应用server下的这些包复制到项目中,重新启动服务就可以。”

 

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

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

 

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

 

因为之前JSP页面能够正常执行。排除JSP代码编写错误,唯一做的改变也仅仅是又一次换了一个Tomcat而已,Tomcat换完以后,环境变量也已经配置完毕了。不可能是环境变量的问题。

如今页面不能正常执行。会不会是因为之前的64Tomcatjar包影响了如今32位的Tomcat。于是接下来做了一个试验,又一次建立一个项目,在里面建立一个新的JSP页面,能够正常訪问。

 

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

 

 

果然是之前的64Tomcatjar包影响的。尽管之前的64位的Tomcat早已经移除了,但是之前的64位的Tomcat的一些jar包仍然包括在项目中导致的。

 

尽管过程一波三折。只是终于问题还是攻克了。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/259098.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java中的ClassLoader

Java中类的加载过程&#xff08;如Dog类&#xff09;&#xff1a; 通过类型信息定位Dog.class文件。载入Dog.class文件&#xff0c;创建相应的Class对象。执行父类的静态字段定义时初始化语句和父类的静态初始化块。执行子类的静态字段定义时初始化语句和子类的静态初始化块。当…

excel删除无尽空白行_excel如何批量删除空白行 巧用 ctrl+G 只需1秒 最常用的技巧...

工作中我们使用excel通常都会遇到这种情况&#xff0c;就是表格中有很多多余的空行。我们需要把多余的空行删除。 如果空行只有一两行的话&#xff0c;可以把鼠标放在空白行上&#xff0c;然后点击鼠标右键&#xff0c;在弹出的菜单中选择删除菜单。 在弹出的删除确定窗口中&am…

Doxygen for C++使用说明——注释代码一

写这一节的时候&#xff0c;我在想网上有众多的参考文献&#xff0c;外加官网上的&#xff0c;要是我再将它们重复一遍&#xff0c;也没什么意思。网上资料很多&#xff0c;但是他们有一个共同的缺点是都是罗列用法&#xff0c;然后显示效果。这些都是比较散的&#xff0c;我想…

DevOps的前世今生

2019独角兽企业重金招聘Python工程师标准>>> 目前在国外&#xff0c;互联网巨头如Google、Facebook、Amazon、LinkedIn、Netflix、Airbnb&#xff0c;传统软件公司如Adobe、IBM、Microsoft、SAP等&#xff0c;亦或是网络业务非核心企业如苹果、沃尔玛、索尼影视娱乐…

【转】最牛B的编码套路

最近&#xff0c;我大量阅读了Steve Yegge的文章。其中有一篇叫“Practicing Programming”&#xff08;练习编程&#xff09;&#xff0c;写成于2005年&#xff0c;读后令我惊讶不已&#xff1a; 与你所相信的恰恰相反&#xff0c;单纯地每天埋头于工作并不能算是真正意义上的…

ecshop 广告设置

最近公司准备做个商城&#xff0c;让我从JAVA转过去&#xff0c;好吧&#xff0c;先看下吧&#xff0c;反正也得做。接到手里的是一套已经成型的模板&#xff0c;但是二次开发必须得了解下机制、文件、响应、设置什么的&#xff0c;也是个新手&#xff0c;写点东西给后面更新的…

linux 信号_Linux信号机制

信号就是一条消息&#xff0c;通知进程系统中发生了什么事&#xff0c;每种信号都对应着某种系统事件。一般的底层硬件异常是由内核的异常处理程序处理的&#xff0c;它对用户进程来说是透明的。而信号机制&#xff0c;提供了一种方法通知用户进程发生了这些异常。例如&#xf…

DOxygen for C++使用说明——添加数学公式

公式 Doxygen允许你把 公式显示在最终的输出中&#xff08;这个功能仅限于HTML和输出&#xff09;.为了可以在HTML documentation显示公式&#xff08;转化为图片&#xff09;&#xff0c;你必须安装以下软件&#xff1a; latex: 编译器, 被用来解析公式, 首先提取公式写到一…

VC2010下Qt5的中文乱码问题

要搞清楚这个问题&#xff0c;先要弄明白编码。但是编码问题实在太复杂&#xff0c;这里肯定讲不开。 我先找一个例子&#xff0c;比如&#xff1a;“中文” 的 Unicode 码点/UTF8编码/GBK 分别是多少。 先去这个网站&#xff0c;输入 “中文” 查询对应的 Unicode 码点/UTF8编…

Tomcat 的 DefaultServlet

问题描述&#xff1a; 群里有人测试 Spring MVC&#xff0c;没有配置任何Controller&#xff0c;只配置了一个view resolver&#xff0c;指定了前缀后缀。 然后&#xff0c;他问的是 当访问 localhost:8080/test 的时候&#xff0c;为什么会被重定向到 localhost:8080/test/ &a…

Python学习(七)面向对象 ——封装

Python 类的封装 承接上一节&#xff0c;学了Student类的定义及实例化&#xff0c;每个实例都拥有各自的name和score。现在若需要打印一个学生的成绩&#xff0c;可定义函数 print_score() 该函数为类外的函数&#xff0c;如下&#xff1a; 1 class Student(object):2 def …

spss练习数据_SPSS篇——如何在成千上百万个数据中标识重复个案

本文就带大家来学习一个小技巧&#xff0c;如何运用SPSS标识重复个案。我们都知道在Excel中&#xff0c;通常会用到“筛选”功能来选出指定条件相同的单元格。那么在SPSS中&#xff0c;如何在成千上百万个数据中筛选出重复的个案呢&#xff1f; 小编就是要告诉你&#xff0c;几…

DOxygen for C++使用说明——Markdown支持

自Doxygen 版本1.8.0&#xff0c;Markdown被引进。 接下来&#xff0c;我们将先简单介绍标准的Markdown语法&#xff0c;读者可以进入Markdown官网查询更详细的细节。然后讨论一下Doxygen支持的Markdown扩展&#xff0c;最后讨论一下Doxygen对Markdown标准的实现细节。 Stand…

方程式漏洞之复现window2008/win7 远程命令执行漏洞

前几天就想写的&#xff0c;因为一些缘故就没写。此次是在外网环境下进行的。大家在内网中也一个样。 方法&#xff1a; 使用Eternalblue模块&#xff0c;剑测是否有漏洞然后msf生成一个dll直接反弹shell. PS&#xff1a;win版本的不知道缘何生成出来的dll是0kb 我就在自己本地…

C++空类和string类

1. 空类 1.1 空类默认哪六个成员函数。 1 class Empty2 {3 public:4 Empty(); //缺省构造函数 Empty e;5 Empty( const Empty& ); //拷贝构造函数 Empty e2(e1);6 ~Empty(); //析构函数7 Empty& operator( const Empty& ); //赋值运算符…

客服会话 小程序 如何发起_小程序、公众号、App三者如何融合布局?这里有一份避坑指南...

对产品经理来说&#xff0c;小程序无疑是2020年最火爆的词之一了。我们能看到&#xff0c;就在今年疫情期间&#xff0c;小程序DAU达到4.5亿&#xff0c;而超市、生鲜果蔬、社区购物等都同比增长100个点左右&#xff0c;小程序的商业价值很明显地在快速释放。小程序如此火爆&am…

DOxygen for C++使用说明——注释代码二

这一次我在谷歌搜索中检索到了Doxygen在github的仓库&#xff0c;进去一看&#xff0c;令人大喜&#xff0c;github仓库里含有了一个Doxygen的官方配置文件Doxyfile,于是下载下来&#xff0c;发现Doxyfile已经配置了将仓库中的\src文件编译成Documentation,并且将结果放在了dox…

python super()(转载)

一、问题的发现与提出 在Python类的方法&#xff08;method&#xff09;中&#xff0c;要调用父类的某个方法&#xff0c;在Python 2.2以前&#xff0c;通常的写法如代码段1&#xff1a; 代码段1&#xff1a; class A:def __init__(self):print "enter A"print "…

Swagger+Spring mvc生成Restful接口文档

2019独角兽企业重金招聘Python工程师标准>>> Swagger 是一个规范和完整的框架&#xff0c;用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法&#xff0c;参数和模型紧密集成到服务器端…

JavaScript——变量与基本数据类型

前言 JavaScript中的变量为松散类型&#xff0c;所谓松散类型就是指当一个变量被申明出来就可以保存任意类型的值&#xff0c;就是不像SQL一样申明某个键值为int就只能保存整型数值&#xff0c;申明varchar只能保存字符串。一个变量所保存值的类型也可以改变&#xff0c;这在Ja…