编译的 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时的一些特性,我也必须找到文件。

我没有在&lt;tomcat_home&gt;/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】:

如果页面未编译,您应该在&lt;tomcat&gt;/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启动异常解决方法

JSP

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)

JSP隐式对象