Loading...
  所在位置:论坛首页 -> 计算机科学与技术 -> 程序设计 -> [求助]JspFactory未定义getJspApplicationContext错误
回复

[求助]JspFactory未定义getJspApplicationContext错误

作者:hll 时间:2010-10-31 14:23:34 收藏 编辑

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<%="helloworld" %>
</body>
</html>

 

报错如下:2010-10-31 13:59:31 org.apache.tomcat.util.digester.SetPropertiesRule begin
警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.j2ee.server:hehe' did not find a matching property.
2010-10-31 13:59:31 org.apache.catalina.core.AprLifecycleListener init
信息: Loaded APR based Apache Tomcat Native library 1.1.14.
2010-10-31 13:59:31 org.apache.catalina.core.AprLifecycleListener init
信息: APR capabilities: IPv6 [false], sendfile [true], accept filters [false], random [true].
2010-10-31 13:59:31 org.apache.coyote.http11.Http11AprProtocol init
信息: Initializing Coyote HTTP/1.1 on http-8888
2010-10-31 13:59:31 org.apache.coyote.ajp.AjpAprProtocol init
信息: Initializing Coyote AJP/1.3 on ajp-8009
2010-10-31 13:59:31 org.apache.catalina.startup.Catalina load
信息: Initialization processed in 1124 ms
2010-10-31 13:59:31 org.apache.catalina.core.StandardService start
信息: Starting service Catalina
2010-10-31 13:59:31 org.apache.catalina.core.StandardEngine start
信息: Starting Servlet Engine: Apache Tomcat/6.0.18
2010-10-31 13:59:32 org.apache.catalina.loader.WebappClassLoader validateJarFile
信息: validateJarFile(E:\J2ee\study\.metadata\.plugins\org.eclipse.wst.server.core\tmp2\wtpwebapps\hehe\WEB-INF\lib\servlet-api.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
2010-10-31 13:59:32 org.apache.coyote.http11.Http11AprProtocol start
信息: Starting Coyote HTTP/1.1 on http-8888
2010-10-31 13:59:32 org.apache.coyote.ajp.AjpAprProtocol start
信息: Starting Coyote AJP/1.3 on ajp-8009
2010-10-31 13:59:32 org.apache.catalina.startup.Catalina start
信息: Server startup in 431 ms
2010-10-31 13:59:34 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: 22 in the generated java file
The method getJspApplicationContext(ServletContext) is undefined for the type JspFactory

第2楼 hll
编辑 删除 引用

补充:以上求助问题的环境为:Eclipse3.6+Tomcat6.0.18.

回复时间:2010-10-31 14:27:23
第3楼 ade
编辑 删除 引用

原因一般是你在Eclipse的项目中,自己导入了jsp-api.jar和servlet-api.jar(根本不需要这么做), 使得在你项目和tmcat6.0中都有了jsp-api.jar和servlet-api.jar包,并且很可能你项目当中的Jar包版本比tomcat6的还低,而在加载时先加载工程当中的jsp-api.jar包,所以出现了这个问题.

解决办法很简单:删除工程中的这两个jar包就可以了。

另外请发帖子的时候,把标题写好了.把问题描述清楚了.便于大家帮助和查看.

回复时间:2010-10-31 14:36:30
第4楼 hll
编辑 删除 引用

呵呵,谢谢你的答案还有小提示。不过我还有两个问题:

第一,删除工程中的这两个jar包后简单的Jsp文件能运行了,但是在写JavaBean或者Servlet程序时又会出现错误,比如会报HttpServlet不能被解析为一个类型这样的错误(HttpServlet cannot be resolved a type),这个问题怎么解决呢?

第二,上面的错误信息都是红色的,正常情况下应该不是红色的吧,[SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.j2ee.server:hehe' did not find a matching property.这一句应该是说server.xml这个文件的吧,怎么样去做才能消除这个红色警告信息?

回复时间:2010-11-1 7:01:57
第5楼 ade
编辑 删除 引用

  这是因为一开始建工程的时候没有指定Runtime Enviroment,就是服务器(如tomcat,jboss),因为这些服务器里都有servlet-api.jar包,Eclipse找不到了,当然会出现不认识HttpServlet,即使你后期指定了服务器,Eclipse仍然找不到,这应该是Eclipse的一个Bug。

  于是你自己就加了一个包进来,编辑是没有问题了,但是运行又出现问题了。

  解决的办法是你在新建工程的时候就指定。如果你已经有了工程,而不想新建,那么就先导出你工程的war包,注意要导出源代码(source code打上对号),然后把工程删除,重新导入,导入的时候指定服务器就可以了。

回复时间:2010-11-1 11:05:09
第6楼 hll
编辑 删除 引用

啊,这下好了,呵呵,非常感谢老师啊!

回复时间:2010-11-1 19:26:21
第7楼 ade
编辑 删除 引用

呵呵,不客气,不过上课要注意听讲,一开始我给大家演示的时候就已经给大家提醒了。

回复时间:2010-11-1 20:14:23
高级回复

操作选项: 评分 加精 解精 奖惩 设专题 设公告 解公告 固顶 总固顶 解固顶 结帖 解结帖 锁帖 解锁 移帖 删帖
  首页
Copyright 2006-2012 HistoryCreator.com Powered By: BBSGood 5
吉ICP备06005902号