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

Posted

技术标签:

【中文标题】如何在 Linux 中使用 IntelliJ Community(免费)版本在本地调试 Tomcat 7.x/8.x webapp?【英文标题】:How to debug a Tomcat 7.x/8.x webapp locally with IntelliJ Community (free) version in Linux? 【发布时间】:2015-02-23 16:44:56 【问题描述】:

我知道终极版可以做到这一点,但有没有办法在社区版中本地调试这些应用程序?

【问题讨论】:

谢谢你,阿米尔。您是否能够配置 tomcat 以使用“热部署”? ***.com/questions/32459047/… 这很有用。谢谢。 非常感谢,与 Tomcat 8.5.9 和 IntelliJ IDEA CE 2016.3.1 完美配合 JAVA_OPTS 也可以在 setenv.sh (setenv.bat for Windows) 文件中设置。 【参考方案1】:

历史

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

相关概念

Tomcat JMX

这是一个Tomcat的远程监控和管理工具。启用调试不需要 JMX 相关设置。虽然它可以通过 JConsole (read more) 用于监控目的。

不同的端口

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

设置

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

请按顺序更改。

Tomcat 端相关变更

    如果 Tomcat 在您的 Tomcat bin 文件夹中运行,请通过以下方式停止它: ./shutdown./catalina stop

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

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

提示:我使用 JAVA_OPTS 而不是 CATALINA_OPTS,因为 catalina.sh 中的 cmets 建议最好使用 JAVA_OPTS。但是,可以以类似的方式使用CATALINA_OPTS 来启用调试。

    启动 Tomcat:

./catalina.sh 开始

IntelliJ 相关更改

结果

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

连接到目标VM,地址:'localhost:9999',传输:'socket'

相关帖子和链接

    Remote debugging with Tomcat (7) and Intellij(仅对 Window 非常有用) IntelliJ and Tomcat.. Howto..?(旧有误导) IntelliJ ultimate and community version setups(有用但过于复杂) IntelliJ IDEA 14.0.0 Web Help/Run/Debug Configuration: Tomcat(有点用处) Debugging with Tomcat and Intellij Community Edition(旧且不完整)

【讨论】:

【参考方案2】:

AmirHd 的回答很有帮助,但我还有一个问题。当我更改 JAVA_OPTS 服务器不会像这篇文章中那样关闭: Tomcat failed to shutdown 我通过更改解决了这个问题

JAVA_OPTS

CATALINA_OPTS

【讨论】:

【参考方案3】:

@AmirHd 的回答很有帮助。我用的是 Idea Community 版本,其实你根本不需要安装任何 Tomcat 插件。

    在位于 Tomcat bin 目录中的 catalina.sh(在 Linux 中)文件的顶部添加以下行。
JAVA_OPTS="$JAVA_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"
    转到创意Run 菜单。选择Edit Configuration 选项。 点击+符号并从下拉列表中选择Remote。 对于该远程调试器,配置您的 Tomcat 调试主机和端口。 (Localhost, 5005) 如下并保存。
      启动您的 Tomcat。 (您将通过以下日志行看到它处于调试模式。)
Listening for transport dt_socket at address: 5005
    通过按Alt + Shift + F9Run -> debug 选项,使用您的想法连接到该端口。

根本没有插件。

【讨论】:

【参考方案4】:

对于 Windows 用户

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

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

catalina.bat run

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

【讨论】:

以上是关于如何在 Linux 中使用 IntelliJ Community(免费)版本在本地调试 Tomcat 7.x/8.x webapp?的主要内容,如果未能解决你的问题,请参考以下文章

Intellij IDEA中如何配置Tomcat服务器

通过 IntelliJ 在 Linux 的 Windows 子系统中使用 Git

Intellij idea史上最简单的教程之Linux下安装与破解Intellij idea2017

如何在内网linux中搭建intellij idea激活服务

Intellij with git - 内容仅在行分隔符中有所不同

如何在 IntelliJ IDEA 2017.1 中禁用鼠标中键粘贴?