【问题标题】:Where is the "work" directory located for a Tomcat instance running in Eclipse?在 Eclipse 中运行的 Tomcat 实例的“工作”目录在哪里?
【发布时间】:2010-10-20 07:20:42
【问题描述】:

在 Eclipse 中,您可以配置许多服务器以在 IDE 中运行,包括 Tomcat。根据您的 Tomcat 配置,在 webapp 生命周期的某个时刻,您的 JSP 文件将被编译成 servlet。这些新的 servlet .class 文件与从 JSP 创建的 .java 中间文件一起存储在 %TOMCAT_HOME%/work 目录中。当您的 JSP 抛出异常并引用对应于 .java 而不是 .jsp 的行号时,此 .java 文件非常有用p>

更新:在我的环境(Windows)上,它位于:

C:/Documents and Settings/%USER%/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/work

也许有人可以更完整地回答 *nix 环境的位置。

【问题讨论】:

    标签: java eclipse jsp tomcat


    【解决方案1】:

    如果您在 Eclipse 中使用 Tomcat Maven 插件,那么您的 Tomcat 相关文件将位于 <project folder>/target/tomcat,包括位于 <project folder>/target/tomcat/work 的 tomcat 工作文件夹,您可以从那里找到您的 jsp .java文件等

    (我知道这可能不适用于所有人,但由于 Tomcat Maven 插件是使用 tomcat 进行开发并使用 maven 管理依赖项和帮助构建过程的流行方式,我希望这些信息可能对某些人有所帮助) .

    【讨论】:

      【解决方案2】:
      1. Windows 上,转到 Eclipse 的 Tomcat 部署位置的最简单方法是在 Servers 视图中右键单击 Tomcat 实例,然后单击“浏览部署位置..."

        您应该会看到 Eclipse 巧妙地打开一个 Windows 资源管理器,将您带到确切的位置。就我而言,它需要我:

        C:\eclipse4.3.2-jee-kepler-SR2-win32\workspaces\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps

        从那里,您可以轻松浏览到“工作”目录,如下所示。

        如果你遵循这个,你永远不必记住位置!

        Eclipse 服务器视图:


        Windows 资源管理器打开:

        Windows 资源管理器(点击地址栏显示完整路径):

      2. Amazon EC2 Linux 上(但这与 Eclipse 无关),Tomcat work 目录位于 /var/cache/tomcat7/work

        [ec2-user@ip-172-31-xx-xx ~]$ uname -a
        Linux ip-172-31-xx-xx 4.1.10-17.31.amzn1.x86_64 #1 SMP Sat Oct 24 01:31:37 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
        
        [root@ip-172-31-xx-xx] /usr/share/tomcat7 $ ls -l
        total 4
        drwxr-xr-x 2 root root   4096 Jan  5 15:18 bin
        lrwxrwxrwx 1 root tomcat   12 Jan  5 15:18 conf -> /etc/tomcat7
        lrwxrwxrwx 1 root tomcat   23 Jan  5 15:18 lib -> /usr/share/java/tomcat7
        lrwxrwxrwx 1 root tomcat   16 Jan  5 15:18 logs -> /var/log/tomcat7
        lrwxrwxrwx 1 root tomcat   23 Jan  5 15:18 temp -> /var/cache/tomcat7/temp
        lrwxrwxrwx 1 root tomcat   24 Jan  5 15:18 webapps -> /var/lib/tomcat7/webapps
        lrwxrwxrwx 1 root tomcat   23 Jan  5 15:18 work -> /var/cache/tomcat7/work
        
        [root@ip-172-31-xx-xx] /var/cache/tomcat7/work/Catalina/localhost/init/org/apache/jsp $ ls -la
        total 180
        drwxr-xr-x 2 tomcat tomcat  4096 Jan  6 06:37 .
        drwxr-xr-x 3 tomcat tomcat  4096 Jan  6 06:37 ..
        -rw-r--r-- 1 tomcat tomcat 54172 Aug 17  2012 index_jsp.class
        -rw-r--r-- 1 tomcat tomcat  2106 Jan  6 06:37 index_jsp$FileComp.class
        -rw-r--r-- 1 tomcat tomcat  1034 Jan  6 06:37 index_jsp$FileInfo.class
        -rw-r--r-- 1 tomcat tomcat  6460 Jan  6 06:37 index_jsp$HttpMultiPartParser.class
        -rw-r--r-- 1 tomcat tomcat 89445 Aug 17  2012 index_jsp.java
        -rw-r--r-- 1 tomcat tomcat  2210 Jan  6 06:37 index_jsp$UplInfo.class
        -rw-r--r-- 1 tomcat tomcat  1208 Jan  6 06:37 index_jsp$UploadMonitor.class
        -rw-r--r-- 1 tomcat tomcat  1184 Jan  6 06:37 index_jsp$Writer2Stream.class
        

      【讨论】:

      • 请注意:在 Neon 中,此选项不再存在。最简单的是使用 Parag 或 sourcerebels 的答案。这两个都对我有用
      【解决方案3】:

      你会发现它在

      projectworkspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0
      

      这是 Eclipse 3.4 发布项目的默认位置。但是,这可以通过更改“服务器”视图中的设置来更改。

      【讨论】:

        【解决方案4】:

        最简单的方法最有可能向已编译的 JSP 页面询问字节码的来源。

        来自http://www.exampledepot.com/egs/java.lang/ClassOrigin.html

        // Get the location of this class
        Class cls = this.getClass();
        ProtectionDomain pDomain = cls.getProtectionDomain();
        CodeSource cSource = pDomain.getCodeSource();
        URL loc = cSource.getLocation();  // file:/c:/almanac14/examples/
        

        希望这会有所帮助。你想做什么?

        【讨论】:

        • 我还没有在 JSP 页面上尝试过,但它在 Tomcat 中的普通类上运行良好。另请注意,一些 JEE 容器知道如何处理未爆炸的 Web 档案。然后 URL 可能会以 jar 开头: - 不能保证 URL 指向文件资源。
        【解决方案5】:

        转到“服务器”窗口->双击您的tomcat实例->单击“打开启动配置”->转到“参数”选项卡。

        寻找这样的变量定义:

        -Dcatalina.base="/Users/dirtyaffairs/Documents/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0"
        

        【讨论】:

        • 谢谢,非常好的信息!我认为这应该是公认的答案:)
        【解决方案6】:

        您可以通过在服务器的 web.xml 配置中设置 scratchDir 参数来更改它(在 Servers 项目中,而不是在您的应用程序 web.xml 中!)。

        【讨论】:

        • 能否提供此参数的示例或参考文档
        【解决方案7】:

        我假设它与您的工作区位于同一位置。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-04-17
          • 2014-10-03
          • 2011-03-31
          • 2012-07-10
          • 2018-04-18
          • 1970-01-01
          • 2020-05-19
          • 1970-01-01
          相关资源
          最近更新 更多