2011-12-29 24 views
36

estoy viendo los siguientes errores en mi página JSP -javax.servlet.jsp.PageContext no se puede resolver a un tipo

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

he visto un post en este tratado y algunas cosas que se sugirieron. BalusC proporcionó una gran entrada: JSTL1.2 y Standard.jar no se deben usar juntos. Hice esto y solucionó el problema por algún tiempo, pero está reapareciendo. No estoy seguro de si tengo más colisiones de jarras. He definido todos los jars como dependencias en Maven. El abajo son las dependencias que he especificados 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

No puedo responder mi pregunta ahora. El problema ahora está resuelto. En lugar de JSTL1.2 jar como dependencia, agregué JSTL-API y JSTL-IMPL jar como se especifica en este enlace http://www.andygibson.net/blog/quickbyte/jstl-missing-from-maven-repositories –

+12

En caso alguien obtiene este error en eclipse, ver propiedades del proyecto -> Project Facets -> Dynamic Web Module -> Runtimes – koppor

Respuesta

54

Usted tendrá que importar en el proyecto de la API de JSP, que no están incluidos en el servlet-api

En mi proyecto, la solución es:

<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 Parece que su solución genera un error diferente. [La respuesta aceptada]. –

5

Asumiendo que este es el POM para una aplicación web ...

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

Varias de estas dependencias se debe establecer como proporcionado ya que están aprovisionados por el contenedor. No debe agruparlos con su aplicación. Ver Maven dependency scopes. Si no lo hace, puede tener un comportamiento indefinido.

Las dependencias que se proporcionan dependen del contenedor.

20

La solución que funcionó para mí, se da en this answer. Vaya a Propiedades del proyecto> Tiempo de ejecución dirigido> Seleccione la casilla de verificación para un tiempo de ejecución (Apache Tomcat 7 en mi caso).
Eso es todo. Solo crea el proyecto ahora y todo estará bien.

+1

Funciona para mí también en Eclipse/Luna. Ya tenía incluido el servlet-api que trata con las dependencias de Java, solo se necesita decirle a Eclipse con qué Runtime se debe comparar y todos esos molestos "errores" de JSP desaparecieron. – Jeff

+1

Esta solución funciona para mí. – NaaN

+0

Funciona para Marse 1.1 también –

1

"La solución que funcionó para mí, se da en esta respuesta. Vaya a las propiedades del proyecto> tiempos de ejecución específicos> Seleccione la casilla de verificación para un tiempo de ejecución (Apache Tomcat 7 en mi caso) Eso es todo. Solo cree el proyecto ahora Y todo estará bien."

Esta solución funcionó para mí.

Cuestiones relacionadas