2011-12-29 60 views
36

Tôi nhìn thấy những lỗi dưới đây trong trang jsp của tôi -javax.servlet.jsp.PageContext không thể giải quyết cho một loại

javax.servlet.jsp.PageContext cannot be resolved to a type 
javax.servlet.jsp.JspException cannot be resolved to a type 

Tôi đã thấy một bài về vấn đề này và cố gắng vài điều mà đã được đề nghị. BalusC cung cấp đầu vào tuyệt vời - JSTL1.2 và Standard.jar không được sử dụng cùng nhau. Tôi đã làm điều này và nó cố định vấn đề này đôi khi - nhưng nó lại xuất hiện. Tôi không chắc chắn nếu tôi có bất kỳ va chạm jar hơn. Tôi đã định nghĩa tất cả các lọ là phụ thuộc trong Maven. Dưới đây là những phụ thuộc mà tôi đã xác định pom.xml -

<dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>commons-fileupload</groupId> 
     <artifactId>commons-fileupload</artifactId> 
     <version>1.2.1</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>servlet-api</artifactId> 
     <version>2.5</version> 
    </dependency> 
    <dependency> 
     <groupId>com.jcraft</groupId> 
     <artifactId>jsch</artifactId> 
     <version>0.1.38</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>jstl</artifactId> 
     <version>1.2</version> 
    </dependency> 
    <dependency> 
     <groupId>commons-logging</groupId> 
     <artifactId>commons-logging</artifactId> 
     <version>1.1.1</version> 
    </dependency> 
    <dependency> 
     <groupId>log4j</groupId> 
     <artifactId>log4j</artifactId> 
     <version>1.2.15</version> 
     <exclusions> 
      <exclusion> 
       <groupId>javax.jms</groupId> 
       <artifactId>jms</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>com.sun.jmx</groupId> 
       <artifactId>jmxri</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>com.sun.jdmk</groupId> 
       <artifactId>jmxtools</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>commons-configuration</groupId> 
     <artifactId>commons-configuration</artifactId> 
     <version>1.6</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.tiles</groupId> 
     <artifactId>tiles-jsp</artifactId> 
     <version>2.2.2</version> 
    </dependency> 

    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-log4j12</artifactId> 
     <version>1.5.6</version> 
    </dependency> 

</dependencies> 
+0

Tôi không thể trả lời câu hỏi của mình ngay bây giờ. Vấn đề hiện đang được giải quyết. Thay vì JSTL1.2 jar làm phụ thuộc, tôi đã thêm các JSTL-API và JSTL-IMPL lọ như được chỉ định trong liên kết này http://www.andygibson.net/blog/quickbyte/jstl-missing-from-maven-repositories –

+12

Trong trường hợp ai đó nhận được lỗi này trong nhật thực, kiểm tra các thuộc tính của dự án -> Project Facets -> Dynamic Web Module -> Runtimes – koppor

Trả lời

54

Bạn sẽ cần phải nhập khẩu trong dự án của bạn API JSP, vốn không có sẵn trong servlet-api

Trong dự án của tôi, giải pháp là:

<dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>jsp-api</artifactId> 
     <version>2.0</version> 
     <scope>provided</scope> 
    </dependency> 
+0

http://stackoverflow.com/questions/7064269/the-method-getjspapplicationcontextservletcontext-is-undefined-for-the-type -js Dường như giải pháp của bạn làm nảy sinh một lỗi khác. [Câu trả lời được chấp nhận]. –

5

Giả sử đây là pom cho một ứng dụng web ...

<dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>servlet-api</artifactId> 
    <version>2.5</version> 
</dependency> 

Một số trong số này phụ thuộc cần được thiết lập như cung cấp vì chúng được cung cấp bởi vùng chứa. Bạn không nên gói chúng với ứng dụng của bạn. Xem Maven dependency scopes. Việc không thực hiện điều này có thể dẫn đến hành vi không xác định.

Chính xác phụ thuộc nào được cung cấp tùy thuộc vào vùng chứa.

20

Các giải pháp mà làm việc cho tôi, được đưa ra trong this answer. Chuyển đến thuộc tính dự án> Runtimes được nhắm mục tiêu> Chọn hộp kiểm cho thời gian chạy (Apache Tomcat 7 trong trường hợp của tôi).
Đó là tất cả. Chỉ cần xây dựng dự án ngay bây giờ và mọi thứ sẽ ổn.

+1

Làm việc cho tôi quá trên Eclipse/Luna. Tôi đã có servlet-api bao gồm các giao dịch với các phụ thuộc Java, chỉ cần nói cho Eclipse biết Runtime nào để kiểm tra và tất cả các lỗi "JSP" gây phiền nhiễu đó biến mất! – Jeff

+1

Giải pháp này phù hợp với tôi. – NaaN

+0

Nó hoạt động cho Marse 1.1 cũng –

1

"Giải pháp đã làm việc cho tôi, được đưa ra trong câu trả lời này. Đi đến thuộc tính dự án> Thời gian chạy được nhắm mục tiêu> Chọn hộp kiểm cho thời gian chạy (Apache Tomcat 7 trong trường hợp của tôi) Đó là tất cả. Chỉ cần tạo dự án ngay bây giờ và mọi thứ sẽ ổn thôi. "

Giải pháp này phù hợp với tôi.

Các vấn đề liên quan