2010-02-24 62 views
9

這是當我嘗試運行JSP文件時在瀏覽器屏幕上顯示的內容。對於JspFactory類型,getJspApplicationContext(ServletContext)方法未定義。

方法getJspApplicationContext(ServletContext中)是未定義的類型JspFactory

堆棧跟蹤:

org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:92) org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330) org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:439) org.apache.jasp er.compiler.Compiler.compile(Compiler.java:334) org.apache.jasper.compiler.Compiler.compile(Compiler.java:312) org.apache.jasper.compiler.Compiler.compile(Compiler.java: 299) org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:586) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317) org.apache.jasper.servlet.JspServlet.serviceJspFile (JspServlet.java:342) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267) javax.servlet.http.HttpServlet.service(HttpServlet.java:856)

而且jasper異常在Tomc上拋出在我跑過它的時候在窗口。

回答

31

方法getJspApplicationContext(ServletContext中)是未定義JspFactory

method在JSP 2.1引入的類型。有3個原因這個問題:

  1. 您使用的太舊版本的JSP容器(需要例如至少Tomcat 6.0)。

  2. 你已經在web.xml中聲明瞭錯誤的Servlet版本。 JSP 2.1與Servlet 2.5攜手並進,所以你的web.xml至少應該按照Servlet 2.5規範來聲明(你仍然需要一個支持Servlet 2.5/JSP 2.1的servlet容器)。

  3. 您已將舊版本的特定於應用程序服務器的庫複製到webapp的/WEB-INF/lib,如servlet-api.jar,jsp-api.jar等。你應該從來沒有做到這一點。它只會導致類加載衝突。在您的webproject中擺脫它們,並在appserver中留下/取消它們。

+0

你的解決方案也適用於我。 Tnx哥們。我欠你一個人情。 – crsuarezf 2012-01-11 18:03:50

+0

ingcarlos,你是如何解決你的問題的?你使用了哪種方法? – janwen 2012-04-26 05:04:57

+0

@janwen:只需檢查列出的任何一個原因。 – BalusC 2012-04-26 05:09:34

1

的方法getJspApplicationContext(ServletContext中)是未定義 類型JspFactory

這也可以當你的項目需要到服務器運行時的參考發生:

  • 權在Eclipse的「Project Explorer」中點擊你的項目
  • 選擇「Build Path | Configur Ë構建路徑」
  • 點擊‘庫’選項卡
  • 點擊‘添加庫’
  • 選擇‘服務器運行時’,然後單擊‘下一步’
  • 選擇‘的Apache Tomcat 7’,或任何你的服務器運行時版本應該是。

注:此錯誤也可能發生了ANT建立,併爲這種情況下,你需要參考目標運行時在你的ANT build.xml文件...下面引用本地tomcat安裝,並使用其「LIB」 文件夾做編譯時:

<project name="tomcat-demo" default="compile" basedir="."> 
    <property name="tomcat-home" value="/path/to/your/tomcat/apache-tomcat-7" /> 

    <path id="project-classpath"> 
     <fileset dir="WebContent/WEB-INF/lib" includes="*.jar" /> 
     <fileset dir="${tomcat-home}/bin" includes="*.jar" /> 
     <fileset dir="${tomcat-home}/common/lib" includes="*.jar" /> 
     <fileset dir="${tomcat-home}/server/lib" includes="*.jar" /> 
    </path> 
    ... 
</project> 

this url陷入僵局:

4
<dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>servlet-api</artifactId> 
    <version>${servlet.version}</version> 
    <scope>provided</scope> 
</dependency> 

還解決了問題

1

Maven的,我也不得不加入JSP的API的依賴像這樣提供的罐子:(有些依賴於拉,我永遠無法弄清楚哪一個,但這個固定它)

<dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>servlet-api</artifactId> 
    <version>2.5</version> 
    <scope>provided</scope> 
</dependency> 
<dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>jsp-api</artifactId> 
    <version>2.0</version> 
    <scope>provided</scope> 
</dependency>  
相關問題