【问题标题】:Where are compiled JSP Java (*__jsp.java) files?已编译的 JSP Java (*__jsp.java) 文件在哪里?
【发布时间】:2011-07-26 16:56:15
【问题描述】:

我在我的网站尝试呈现的其中一个 jsp 文件 (survey.jsp) 中收到了 javax.servlet.jsp.JspException。但是,堆栈跟踪并没有给出 jsp 中失败的特定行,而是给出失败的行号 (survey_jsp.java:787),这似乎是编译后的 JSP 文件。我在哪里可以找到这样的文件,以便我知道是哪一行引发了这个异常?

谢谢

编辑:如果您按照 Will 在下面评论中的建议使用 tomcat,这些文件位于 /work 目录中。

【问题讨论】:

    标签: java tomcat jakarta-ee struts jstl


    【解决方案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

            根据您的项目名称更改链接。

            【讨论】:

              猜你喜欢
              • 2011-10-13
              • 2015-08-15
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-11-19
              • 1970-01-01
              • 2015-08-09
              相关资源
              最近更新 更多