我在我的网站尝试呈现的一个jsp文件中获得javax.servlet.jsp.JspException
(survey.jsp
)。但是,堆栈跟踪没有给出jsp中失败的特定行,而是它失败的行号(survey_jsp.java:787
),它似乎是已编译的JSP文件。我在哪里可以找到这样的文件,以便我知道哪一行引发了这个异常?
由于
编辑:如果您使用tomcat,这些文件将存在于/work
目录中,如下面的评论所示。
答案 0 :(得分:63)
默认情况下,已编译的JSP文件位于Tomcat环境的/work
文件夹中。应该有一个子文件夹Catalina
,该子文件夹又有一个子文件夹,表示默认为localhost
的域名。反过来应该是项目文件夹,而该文件夹又包含包层次结构org.apache.jsp
,其中包含已编译的JSP文件。
Tomcat
|-- backup
|-- bin
|-- conf
|-- lib
|-- logs
|-- temp
|-- webapps
`-- work
`-- Catalina
`-- localhost
`-- projectname
`-- org
`-- apache
`-- jsp
|-- survey_jsp.class
`-- survey_jsp.java <--- here
无关,JspException
的堆栈跟踪中应该有一个根本原因部分,它通常包含有关真正根本原因的更多详细信息这个问题。在堆栈跟踪中进一步阅读。那么,您是否知道将原始Java代码放在JSP文件中被视为bad practice?正如您现在遇到的那样,它使问题更难调试。
答案 1 :(得分:5)
如果页面没有编译,你应该在<tomcat>/work/*
以下的地方找到它。完整路径取决于您的环境。如果你在那里找不到它,你应该在调试模式下启动Tomcat,它肯定会使.java
文件无法编译(Tomcat 7)。
答案 2 :(得分:3)
我正在使用Intellij
来学习JavaEE,为了在jsp转换为servlet时查看某些功能,我还必须找到该文件。
我在<tomcat_home>/work/*
以下找不到它。我终于发现该文件位于 ~/.IntelliJIdea15/system/tomcat/
文件夹下(从~/.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
如果您仍然无法在Intellij的主文件夹下找到它,则可能需要尝试使用
find . | grep 'nameOfYourJsp_jsp.java'
在合适的父文件夹中。
答案 3 :(得分:1)
就我而言,已编译的jsps位于
之下 /var
|--cache
|-- tomcat8
|--Catalina
|--localhost
|--projectname
|-- (etc...)
答案 4 :(得分:0)
来自oracle文档
javax.servlet.jsp.JspException :: JSP引擎已知的一般异常;未捕获的JspExceptions将导致调用errorpage机制。
每当我在代码中使用scriplets时,我甚至习惯了这个。
我的建议:不要使用脚本,即使它看起来似乎很容易开发代码,但考虑到所有应有的方面,它是一个很大的头脑 - 难以维护一个scriplets代码。信任我
答案 5 :(得分:0)
添加另一种方案:使用eclipse和tomcat运行Spring MVC: 您应该在工作区文件夹中找到_jsp.java文件:
\ workspace.metadata.plugins \ org.eclipse.wst.server.core \ tmp0 \ work \ Catalina \ localhost [项目名称] \ org \ apache \ jsp \
答案 6 :(得分:-4)
C:\用户\ ADMIN \蚀-workspace.metadata.plugins \ org.eclipse.wst.server.core \ TMP0 \工作\卡塔利娜\本地主机\ JspDemo \组织\阿帕奇\ JSP
根据您的项目名称更改链接。