有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java启动tomcat7:在eclipse中运行maven插件并调试

我想在eclipse中调试webapp。我已经了解到tomcat和webapp在eclipse内部以调试模式运行,但是webapp代码中的断点没有任何效果

详细信息
webapp是一个maven工件,我在eclipse中使用m2e插件来连接maven和eclipse

我已经设法从eclipse中启动了tomcat服务器。webapp是在tomcat中启动的,如果我选择的话,也是在调试模式下启动的:

  • 在eclipse中,右键单击project
  • 运行方式>;Maven build。。。(不是“Maven构建”)
  • 一扇窗户打开了。在文本字段“目标”中,输入“tomcat7:run”
  • 单击应用
  • 单击运行

tomcat服务器启动并运行,它的stdlog被打印到eclipse中的一个窗口中。我还可以方便地停止它,并在调试模式下再次启动它。到目前为止,这是我想要的,也是我期望的

问题
我在我的webapp的代码中设置了一个断点,并在eclipse中以调试模式重新启动tomcat。现在,断点不是活动的:它没有活动断点所具有的小记号,我知道代码已执行,但它不会在断点处停止


共 (3) 个答案

  1. # 1 楼答案

    有两种方法可以解决这个问题,您需要其中一种或两种方法。打开你的跑步配置,然后

    问题+解决方案1(分叉)
    如果tomcat在另一个VM中分叉,那么需要添加参数forkMode,其值为never。这允许eclipse“查看”tomcat的VM并在那里设置断点

    问题+解决方案2(来源)
    在带有maven父工件和子工件的某些设置中,eclipse可能不知道某些子项目的源属于您的webapp。其症状是执行在断点处停止,但eclipse不会自动跳转到源位置,而是告诉您源位置未知
    要解决这个问题,您需要将子项目的源添加到跑步配置中:在跑步配置中,转到source>;加上>;Java项目,并选择所有包含可能要调试的源代码的相关项目

  2. # 2 楼答案

    可以使用以下命令使用maven运行tomcat:

    mvn tomcat7:run

    如果要调试,请设置以下maven选项:

    export MAVEN_OPTS=-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000

    如果您在windows中,请使用set命令:

    set MAVEN_OPTS=-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000

    然后可以使用Eclipse的Remote Java Application进行调试

    希望这有帮助

  3. # 3 楼答案

    转到eclipse调试视图,如果选中该复选框,请在断点选项卡视图中选中断点