2012-03-06 60 views
0

我是新來的春天。我正在嘗試使用spring mvc來構建一個小型網站。 當我開始這個項目時,我得到:org.apache.jasper.JasperException:無法編譯使用彈簧時遇到的JSP類

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 

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:349) 
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:327) 
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:314) 
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:589) 
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317) 
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) 
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) 
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:127) 
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:298) 
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852) 
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) 
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) 
at java.lang.Thread.run(Thread.java:662) 

HTTP狀態是500,但我的index.jsp只是

<html> 
<body> 
<h2>Hello World!</h2> 
</body> 
</html> 

在web.xml:

<servlet> 
    <servlet-name>action</servlet-name> 
    <servlet-class> 
     org.springframework.web.servlet.DispatcherServlet 
    </servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>action</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 
<welcome-file-list> 
    <welcome-file>/jsp/index.jsp</welcome-file> 
</welcome-file-list> 

的action-servlet.xml:

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/> 
<context:component-scan base-package="com.test.Controller"/> 

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="prefix"><value>/jsp/</value></property> 
    <property name="suffix"><value>.jsp</value></property> 
</bean> 

我把index.jsp放在src/main/webapp/jsp/文件夾下。 任何人都可以給我一些關於這個問題的提示和我的XML文件中的問題。我是春天新來的,所以很多人都很困惑。

非常感謝!

回答

5

它看起來有一些版本不匹配。確保servlet的API和JSP的API都包含在WEB-INF/lib文件夾中使用Maven,你必須將這些依賴關係<scope>provided</scope>,使它們不包含在工件(目標/ foo.war)

如果

如果使用Eclipse,你應該安裝其它插件 - M2E-WTP,這需要的<provided>範圍依賴護理(WTP與同步時M2E不這樣做)

+0

感謝您提醒,但我現在沒有WEB-INF下的lib文件夾。我使用maven構建,所以所有的jar都在maven庫中。 – 2012-03-06 23:32:39

+0

@Xuanzi Han這是你應該指定的一些信息;)看我的更新 – Bozho 2012-03-07 08:50:26

0

我得到了同樣的問題,因爲我用

- jdk1.7.0_45 
- apache-tomcat-8.0.18 

但我改變服務器

- apache-tomcat-7.0.57 

後,將其固定。

相關問題