2011-12-29 36 views
36

widzę poniższe błędy w mojej strony jsp -javax.servlet.jsp.PageContext nie mogą być rozwiązane do rodzaju

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

widziałem post na tym i próbował kilka rzeczy, które zostały zasugerowane. BalusC zapewnił doskonały wkład - JSTL1.2 i Standard.jar nie mogą być używane razem. Zrobiłem to i naprawiłem problem na jakiś czas - ale pojawia się on ponownie. Nie jestem pewien, czy mam więcej kolizji słoików. Wszystkie słoiki zdefiniowałem jako zależności w Maven. Poniżej są zależnościami, że mam określone 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

Nie mogę teraz odpowiedzieć na moje pytanie. Problem został rozwiązany. Zamiast JARL1.2 jar jako zależność, dodałem JSTL-API i JSTL-IMPL słoiki, jak określono w tym linku http://www.andygibson.net/blog/quickbyte/jstl-missing-from-maven-repositories –

+12

W przypadku ktoś dostaje ten błąd w czasie zaćmienia, sprawdź właściwości projektu -> Aspekty projektu -> Dynamiczny moduł WWW -> Runtimes – koppor

Odpowiedz

54

Trzeba będzie importować w projekcie API JSP, które nie są zawarte w servlet-api

W moim projekcie, rozwiązaniem jest:

<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-unefined-for-the-type -js Wygląda na to, że Twoje rozwiązanie powoduje inny błąd. [Przyjęta odpowiedź]. –

5

Zakładając to pom dla aplikacji sieci ...

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

Szereg z tych zależności powinno być ustawione jako przewidziane, ponieważ są one dostarczane przez kontener. Nie powinieneś łączyć ich z aplikacją. Zobacz Maven dependency scopes. Nieprzestrzeganie tego może spowodować niezdefiniowane zachowanie.

Dokładne zależności podane w zależności od kontenera.

20

Rozwiązanie że pracował dla mnie, podano w this answer. Idź do właściwości projektu> Ukierunkowane środowiska wykonawcze> Zaznacz pole wyboru dla środowiska wykonawczego (Apache Tomcat 7 w moim przypadku).
To wszystko. Po prostu zbuduj projekt teraz i wszystko będzie dobrze.

+1

Działa również dla mnie w Eclipse/Luna. Już miałem aplet servi-api, który zajmuje się zależnościami Java, wystarczy powiedzieć Eclipse, który Runtime ma sprawdzić i wszystkie te irytujące "błędy" JSP zniknęły! – Jeff

+1

To rozwiązanie działa dla mnie. – NaaN

+0

To działa dla Marse 1.1 oraz –

1

„Rozwiązanie, że pracował dla mnie, jest podana w tej odpowiedzi. Idź do projektu właściwości> Ukierunkowane czasy pracy> Zaznacz pole wyboru na starcie (Apache Tomcat 7 w moim przypadku). to wszystko. Wystarczy zbudować projekt teraz i wszystko będzie dobrze. "

To rozwiązanie sprawdziło się u mnie.

Powiązane problemy