2011-07-26 13 views
19

Obtengo un javax.servlet.jsp.JspException en uno de los archivos jsp que mi sitio web está tratando de procesar (survey.jsp). Sin embargo, el seguimiento de pila no me proporciona la línea específica en jsp donde falla, sino el número de línea donde falla en (survey_jsp.java:787), que parece ser el archivo JSP compilado. ¿Dónde encuentro esos archivos, para saber qué línea está arrojando esta excepción?¿Dónde se compilan los archivos JSP Java (* __ jsp.java)?

Gracias

EDIT: Estos archivos se encuentran en el directorio /work si está utilizando Tomcat como Will sugirió en el comentario a continuación.

+7

Qué servidor de aplicaciones está usando? Varía según el servidor de la aplicación (y la configuración). Tomcat está predeterminado en el directorio/work. –

+0

Estoy usando tomcat. – Sam

Respuesta

48

Los archivos compilados JSP están disponibles de forma predeterminada en la carpeta /work del entorno Tomcat. Debe haber una subcarpeta Catalina que a su vez tiene una subcarpeta que representa el nombre de dominio que por defecto es localhost. A su vez, debería ser la carpeta del proyecto que a su vez contiene la jerarquía de paquetes org.apache.jsp con los archivos JSP compilados.

Tomcat 
|-- backup 
|-- bin 
|-- conf 
|-- lib 
|-- logs 
|-- temp 
|-- webapps 
`-- work 
     `-- Catalina 
      `-- localhost 
       `-- projectname 
        `-- org 
          `-- apache 
           `-- jsp 
            |-- survey_jsp.class 
            `-- survey_jsp.java <--- here 

Sin relación al problema concreto, no debe haber una causa parte raíz en el StackTrace del JspException que por lo general contiene más detalles sobre la verdadera causa raíz del problema. Lee un poco más en la stacktrace. Por cierto, ¿sabes que poner código Java sin procesar en archivos JSP se considera bad practice? Hace que los problemas sean más difíciles de depurar a medida que te encuentras ahora.

+0

Estoy usando struts para aplicar la estructura MVC, por lo que no se usa java en bruto dentro de jsp. El error surge porque "No se puede encontrar bean:" blah "en cualquier ámbito" – Sam

+0

Luego, calcular el código fuente Java generado no ofrece ningún beneficio adicional. Solo sería todo abracadabra para ti. El trabajo real debe hacerse para comprender el mensaje de error * real * (que finalmente calculó en la pila) y luego corregir la vista/modelo/configuración en consecuencia. Es decir. asegúrese de que el bean "bla" esté en el alcance. – BalusC

+0

Nunca he visto archivos JSP sin código Java sin procesar, tbh. –

5

Si la página no se compiló, debería encontrarla en algún lugar debajo de <tomcat>/work/*. La ruta completa depende de tu entorno. Si no puede encontrarlo allí, debe iniciar su Tomcat en modo de depuración, definitivamente guarda .java archivos no compilados (Tomcat 7).

0

del documento oráculo

javax.servlet.jsp.JspException :: Una excepción genérica conocida por el motor JSP; las JspExceptions no detectadas darán lugar a una invocación de la maquinaria de página de error.

Incluso he utilizado para conseguir esto cada vez que he usado en mi código scriplets

mi consejo: no utilice scripltes incluso se podría desarrollar código parece fácil, pero con todos los aspectos de su vencimiento, una gran cabeza - dolor de mantener un código de scriplets. CONFÍA EN MI

3

Estoy usando Intellij para aprender JavaEE y para ver algunas funciones cuando jsp se traduce en servlet, también tengo que encontrar el archivo.

No lo encontré más abajo <tomcat_home>/work/*. Finalmente encuentro que el archivo está bajo la carpeta ~/.IntelliJIdea15/system/tomcat/ (estructura de árbol que muestra desde ~/.IntelliJIdea15/system/tomcat/)!

Name related to project name 
|-- conf 
|-- logs 
`-- work 
     `-- Catalina 
      `-- localhost 
       `-- projectname and type 
        `-- org 
          `-- apache 
           `-- jsp 
            |-- survey_jsp.class 
            `-- survey_jsp.java <--- here 

Si todavía no lo encuentra en la carpeta principal de IntelliJ, puede que tenga que tratar de usar

find . | grep 'nameOfYourJsp_jsp.java' 

en carpeta principal adecuado.

+0

Este es solo el caso si el IDE está configurado para hacerse cargo del control de implementación del servidor. Esto no es cierto en entornos normales/de producción. – BalusC

+0

No hice ninguna configuración para eso. Entonces, ¿es el comportamiento predeterminado de intellij? – Tony

1

En mi caso, JSP compilados estaban bajo

/var  
    |--cache  
     |-- tomcat8  
      |--Catalina 
        |--localhost 
          |--projectname 
           |-- (etc...) 
Cuestiones relacionadas