编译的 JSP Java (*__jsp.java) 文件在哪里?
Posted
技术标签:
【中文标题】编译的 JSP Java (*__jsp.java) 文件在哪里?【英文标题】:Where are compiled JSP Java (*__jsp.java) files? 【发布时间】:2011-10-13 14:32:14 【问题描述】:我在我的网站尝试呈现的其中一个 jsp 文件 (survey.jsp
) 中收到了 javax.servlet.jsp.JspException
。但是,堆栈跟踪并没有给出 jsp 中失败的特定行,而是给出失败的行号 (survey_jsp.java:787
),这似乎是编译后的 JSP 文件。我在哪里可以找到这样的文件,以便我知道是哪一行引发了这个异常?
谢谢
编辑:如果您按照 Will 在下面评论中的建议使用 tomcat,这些文件位于 /work
目录中。
【问题讨论】:
【参考方案1】:编译后的 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 吗?它使您现在遇到的问题更难调试。
【讨论】:
我正在使用 struts 来强制执行 MVC 结构,因此在 jsp 中没有使用原始 java。出现错误是因为它“在任何范围内都找不到 bean:“blah”” 那么计算生成的 Java 源代码不会带来额外的好处。对你来说,这只会是胡言乱语。真正的工作应该是理解 real 错误消息(你最终在堆栈跟踪中找到了),然后相应地修复视图/模型/配置。 IE。确保 bean "blah" 在范围内。 我从来没有见过没有原始 Java 代码的 JSP 文件,tbh。 在我的情况下,我的 tomcats 工作文件夹是一个空文件夹。如何更新此文件夹【参考方案2】:我正在使用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 的 home 文件夹下仍然找不到它,你可能不得不尝试使用
find . | grep 'nameOfYourJsp_jsp.java'
在合适的父文件夹中。
【讨论】:
仅当 IDE 配置为从服务器接管部署控制时才会出现这种情况。在正常/生产环境中并非如此。 我没有为它做任何配置。所以这是intellij的默认行为?【参考方案3】:如果页面未编译,您应该在<tomcat>/work/*
下方的某处找到它。完整路径取决于您的环境。如果你在那里找不到它,你应该在调试模式下启动你的 Tomcat,它肯定会保持 .java
文件无法编译(Tomcat 7)。
【讨论】:
【参考方案4】:在我的情况下,编译的jsps在
/var
|--cache
|-- tomcat8
|--Catalina
|--localhost
|--projectname
|-- (etc...)
【讨论】:
【参考方案5】:再添加一个场景:使用 eclipse 和 tomcat 运行 Spring MVC: 您应该在工作区文件夹中找到 _jsp.java 文件:
\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost[项目名称]\org\apache\jsp\
这也确实基于您在 tomcat 中的设置:
【讨论】:
【参考方案6】:来自oracle文档
javax.servlet.jsp.JspException :: JSP 引擎已知的一般异常;未捕获的 JspExceptions 将导致错误页面机制的调用。
我什至曾经在我的代码中使用脚本时得到这个
我的建议:不要使用脚本,即使它看起来很容易开发代码,但恕我直言,维护一个脚本代码是一件很头疼的事情。相信我
【讨论】:
【参考方案7】:C:\Users\ADMIN\eclipse-workspace.metadata.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\JspDemo\org\apache\jsp
根据您的项目名称更改链接。
【讨论】:
以上是关于编译的 JSP Java (*__jsp.java) 文件在哪里?的主要内容,如果未能解决你的问题,请参考以下文章
java.lang.NullPointerException at org.apache.jsp.**_jsp.jspInit(**_jsp.java)tomcat启动异常解决方法
org.apache.jsp.foo_jsp._jspInit(foo_jsp.java:22) 处的 java.lang.NullPointerException
at org.apache.jsp.index_jsp._jspInit(index_jsp.java:23)异常解决
java.lang.NullPointerException at org.apache.jsp.index_jsp._jspInit(index_jsp.java:40)