【问题标题】:Eclipse Tomcat remote debugging: are the sources from eclipse cached somewhere?Eclipse Tomcat 远程调试:来自 Eclipse 的源代码是否缓存在某处?
【发布时间】:2012-12-04 09:34:55
【问题描述】:

在调试 tomcat 6 时,我们发现 Tomcat 和 Eclipse 中的部署有两个不同的类。 Tomcat 中的部署会创建 NullPOinterException,而 Eclipse 源不会。问题是,如果我们使用startup.sh 启动Tomcat,它会产生错误......每次!如果我们以catalina jpda start 启动,将Eclipse 连接到它,它会产生错误,因为我们没有更改某个属性的值,这会导致此错误。更改此值后,即使我们删除部署文件夹和工作目录并在调试模式下重新启动,错误也消失了。没有例外。但是,如果我们再次使用startup.sh 重新启动,错误会再次出现。

那么,我的问题是,Tomcat 或 Eclipse 是否缓存/存储来自 Eclipse 的源代码以供远程调试器使用?

谢谢!

【问题讨论】:

    标签: eclipse tomcat remote-debugging


    【解决方案1】:

    当您调试应用程序时,Eclipse(我相信像 IDEA 和 Netbeans 之类的其他工具)会在“保存”时替换服务器上正在运行的代码。这意味着当在 Eclipse 中改变一个类时,保存它,它会在服务器上改变它。也称为代码替换。我也相信tomcat会记录catalina.out中的变化
    但是,当您重新启动服务器时,它会获取之前已部署的类,因此您会在 Eclipse 中获取更改之前的类。

    【讨论】:

    • 好的!需要为此检查 catalina.out。但这如何解释,如果我从startup.sh(包括错误)开始,然后用catalina jpda start重新启动,错误又消失了?请记住,我第一次以调试模式启动时,错误一直存在,直到我更改了此属性。
    • 我相信tomcat在webapp旁边有一个工作目录。调试下的更新类被“推送”到那里,但在重新启动时 startup.sh 它从 webapp 读取,但调试仍与工作目录合并。
    • 抱歉,我无法验证这一点。如果我删除工作目录中的 al 子文件夹并删除 webapps 中的文件夹,则在调试模式下启动时它仍然可以正常工作,而在正常启动时则无法正常工作。这真的让我很烦! :-)
    猜你喜欢
    • 2013-02-13
    • 2011-04-19
    • 2013-08-07
    • 2013-01-29
    • 1970-01-01
    • 2013-01-21
    • 2011-12-23
    • 2019-11-10
    • 2011-08-14
    相关资源
    最近更新 更多