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

14 篇文章 0 订阅
8 篇文章 0 订阅

刚配置好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.apache.jasper.JasperException: Unable to compile class for JSP:
 
An error occurred at line: 23 in the generated java file
The method getJspApplicationContext(ServletContext) is undefined for the type JspFactory
 
Stacktrace:
     at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:92)
     at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330)
     at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:439)
     at org.apache.jasper.compiler.Compiler.compile(Compiler.java:334)
     at org.apache.jasper.compiler.Compiler.compile(Compiler.java:312)
     at org.apache.jasper.compiler.Compiler.compile(Compiler.java:299)
     at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:586)
     at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
     at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
     at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
     at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
     at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
     at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
     at java.lang.Thread.run(Thread.java:619)

 

 

于是呢,百度之。

网上说是Tomcat的web.xml和项目里的web.xml中德版本标识不一样。

就是这句话

 

?
1
2
3
4
< web-app xmlns = "http://java.sun.com/xml/ns/javaee"
     xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
     version = "2.5" >

于是我就保证他们俩统一了。启动之。错误继续!

然后我又百度。在ITeye找到这么一个活生生的案例。

原文是这样的:

 

工程启动正常,但是只要一访问页面就会报: 

The method getJspApplicationContext(ServletContext) is undefined for the typ  ...... 

打断点,每次走到 CharacterEncodingFilter.java  doFilter()就抛异常了。 


网上说是工程里面多了几个包,认真找下去,还真的是多了 javax.servlet.jar 和 javax.servlet.jsp.jar 两个包。 去掉就OK了。


 

然后我看了下。 javax.servlet.jar 和 javax.servlet.jsp.jar 两个包在J2EE Library中。于是我移除了J2EEl Library。

允许。报错!依然是:

 

?
1
2
3
4
Unable to compile class for JSP:
 
An error occurred at line: 23 in the generated java file
The method getJspApplicationContext(ServletContext) is undefined for the type JspFactory

继续找方案。我相信一定会解决的。

百度里全是说删除那两个jar包的方案。无果,我就自己又新建了一个web项目,运行没出错。

于是就应该是我项目里的问题了。

又找到了信心,继续寻找错误根源。

可能结果很搞笑。

我新建了一个项目,把原项目的类,配置,jsp文件全部拷贝进去了。还有jar包。

然后运行成功了。

想了想,应该是我之前建立项目的时候选择的是J2EE4.0 然后再进行项目操作的时候,我不小心使用Myeclipse将项目强制J2EE5.0 ,然后可能就会出现了jar包的冲突。

 

我想如果日后出了这样的问题。应该尝试了这些方法就能解决。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值