2010-02-24 25 views
9

Đây là những gì tôi nhận được trên màn hình trình duyệt khi tôi cố chạy tệp JSP.Phương thức getJspApplicationContext (ServletContext) là không xác định cho kiểu JspFactory

Phương pháp getJspApplicationContext (ServletContext) là undefined cho các loại JspFactory

stacktrace:

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 increas86) 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)

Và ngoại lệ jasper được ném lên Tomc tại cửa sổ khi tôi chạy nó.

Trả lời

31

Phương pháp getJspApplicationContext (ServletContext) là undefined cho các loại JspFactory

Đó method đã được giới thiệu trong JSP 2.1. Có 3 nguyên nhân cho vấn đề này:

  1. Bạn đang sử dụng một phiên bản quá cũ của container JSP (bạn cần ví dụ ít nhất Tomcat 6.0).

  2. Bạn đã khai báo phiên bản Servlet sai trong web.xml. JSP 2.1 đi đôi với Servlet 2.5, do đó, ít nhất web.xml của bạn nên được khai báo theo thông số Servlet 2.5 (bạn vẫn cần một servletcontainer Servlet 2.5/JSP 2.1 có khả năng cho điều đó).

  3. Bạn đã sao chép các thư viện dành riêng cho máy chủ ứng dụng được phiên bản cũ hơn vào /WEB-INF/lib của webapp, như servlet-api.jar, jsp-api.jar và cứ tiếp tục như vậy. Bạn nên không bao giờ làm điều đó. Nó sẽ chỉ dẫn đến các vụ va chạm lớp học. Loại bỏ chúng trong webproject của bạn và để lại/untouch chúng ở đó trong máy chủ ứng dụng.

+0

Giải pháp của bạn cũng làm việc cho tôi. Tnx buddy. Tôi nợ bạn một. – crsuarezf

+0

ingcarlos, Bạn giải quyết vấn đề của mình như thế nào? Bạn đã sử dụng phương pháp nào? – janwen

+0

@janwen: chỉ cần kiểm tra bất kỳ một trong những nguyên nhân được liệt kê. – BalusC

1

Phương pháp getJspApplicationContext (ServletContext) là undefined cho loại JspFactory

này cũng có thể xảy ra khi dự án của bạn đòi hỏi một tham chiếu đến một thời gian chạy máy chủ:

  • Ngay nhấp vào dự án của bạn trong "Project Explorer" của Eclipse
  • Chọn "Build Path | Configur e Build Path"
  • Bấm vào "Thư viện" tab
  • Bấm "Add Library"
  • Chọn "Server Runtime" và nhấn "Next"
  • Chọn "Apache Tomcat 7", hoặc bất cứ thời gian chạy máy chủ của bạn phiên bản nên được.

Lưu ý: Lỗi này cũng có thể xảy ra đối với bản dựng ANT và trong trường hợp đó, bạn cần tham khảo thời gian chạy đích trong tệp tin build.xml ANT của bạn ... Tham khảo sau cài đặt tomcat cục bộ và sử dụng "lib" thư mục khi thực hiện biên dịch:

<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> 

vướng từ this url:

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

cũng sửa chữa các vấn đề

1

Đối với Maven, tôi cũng phải thêm phụ thuộc jsp-api như một cái jar được cung cấp như sau: (Một số phụ thuộc khác đã kéo nó vào, tôi không bao giờ có thể tìm ra cái nào, nhưng cái này đã sửa nó lên)

<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>  
Các vấn đề liên quan