2015-02-10 114 views
1

此运行时错误发生在我的spring mvc项目中。目标服务器apache tomcat 8.0。你能不能帮我解决这个问题:春季网络应用程序错误

org.apache.jasper.JasperException: Unable to compile class for JSP: 

An error occurred at line: [31] in the generated java file: [C:\Users\mehrdad\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\CPNC\org\apache\jsp\pages\home_jsp.java] 
The method getJspApplicationContext(ServletContext) is undefined for the type JspFactory 

An error occurred at line: [42] in the generated java file: [C:\Users\mehrdad\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\CPNC\org\apache\jsp\pages\home_jsp.java] 
The method getDispatcherType() is undefined for the type HttpServletRequest 

Stacktrace: 
    org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:103) 
    org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:199) 
    org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:450) 
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:361) 
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:336) 

这是针对home.jsp:

<?xml version="1.0" encoding="ISO-8859-1" ?> 
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> 
<title>Home page</title> 
</head> 
<body> 
<h1>Home page</h1> 
<p>This is Home page. It's available for all users.<br/> 
<a href="${pageContext.request.contextPath}/sec/moderation.html">Moderation page</a><br/> 
<a href="${pageContext.request.contextPath}/admin/first.html">First Admin page</a><br/> 
<a href="${pageContext.request.contextPath}/admin/second.html">Second Admin page</a><br/> 
</p> 
</body> 
</html> 
+0

这可能是在类路径中存在多个(冲突的)servlet api jar的问题。检查你的lib目录一次,并确保你使用3 + api版本。 – 2015-02-10 20:39:54

+0

你可以在战争中列出jar文件吗? – 2015-02-10 20:49:00

+0

此图显示了我的jar文件:http://8pic.ir/images/uo6ua85eszihkrgx315x.jpg – 2015-02-10 21:29:17

回答

0

删除库javax.servlet-apiservlet-apijsp-apijstl从得到的WAR文件。这些库应在编译时使用,但不应将其包含在WAR档案中。编译JSP文件的服务器(例如Tomcat)提供了这些依赖关系。您的库优先于服务器提供的库,并导致错误。

如果您正在使用Maven或Gradle将依赖项的范围设置为provided值。