如何在Linux中使用IntelliJ社区(免费)版本在本地调试Tomcat 7.x / 8.x webapp?

我知道这可以与Ultimate Edition一起使用,但有没有办法在Community Edition中本地调试这些应用程序?

历史

如果您使用过IntelliJ Ultimate版,您已经看到可以添加Tomcat配置,您可以在IntelliJ中调试或运行Tomcat容器。 通过一些额外的设置,您可以让IntelliJ社区版本为您做同样的事情。

相关概念

Tomcat JMX

这是Tomcat的远程监视和管理工具。 启用调试不需要JMX相关设置。 虽然它可以通过JConsole用于监视目的( 阅读更多 )。

不同的端口

您的Tomcat实例必须已经启动并且正在运行,因为社区版本能够将自身附加到Tomcat进程。 虽然您的tomcat将在端口上运行(Tomcat默认为8080),但您还需要为调试器设置另一个端口以将其自身附加到正在运行的Tomcat版本(在我们的示例中为9999)。

设置

设置包括您需要对Tomcat进行的更改以及您需要在IntelliJ社区版上进行的配置。

请按照更改顺序进行操作。

Tomcat方面的相关变化

  1. 如果它在Tomcat bin文件夹中运行,请停止Tomcat: ./shutdown./catalina stop

  2. 将以下行添加到注释的JAVA_OPTS set语句下的catalina.sh文件中:

    JAVA_OPTS =“$ JAVA_OPTS -Xdebug -Xrunjdwp:transport = dt_socket,server = y,suspend = n,address = 9999”

提示:我使用了JAVA_OPTS而不是CATALINA_OPTS作为catalina.sh中的注释表明它最好使用JAVA_OPTS 。 但是,可以以类似的方式使用CATALINA_OPTS来启用调试。

  1. 启动Tomcat:

./catalina.sh开始

IntelliJ相关的变化

在此处输入图像描述

结果

单击IntelliJ社区版中的调试按钮后,调试部分应在其控制台区域中打开以下行:

连接到目标VM,地址:’localhost:9999’,transport:’socket’

相关的post和​​链接

  1. 使用Tomcat(7)和Intellij进行远程调试(尽管对于Window非常有用)
  2. IntelliJ和Tomcat .. Howto ..? (误导,因为它的旧)
  3. IntelliJ终极版和社区版设置 (有用但复杂)
  4. IntelliJ IDEA 14.0.0 Web帮助/运行/调试配置:Tomcat (有点用)
  5. 使用Tomcat和Intellij Community Edition进行调试 (旧的和不完整的)

AmirHd的回答非常有帮助,但我还有一个问题。 当我更改JAVA_OPTS时,服务器不会像这篇post一样关闭: Tomcat无法关闭我通过更改解决了这个问题

 JAVA_OPTS 

 CATALINA_OPTS 

对于Windows用户

 set "JAVA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005" 

在catalina.bat中输入然后在tomcat目录中打开命令行并运行

 catalina.bat run 

另请注意:我必须选择端口5005,因为我的IntelliJ中配置设置中的默认值不可编辑。