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

Java 如何在Linux中使用IntelliJ社区(免费)版本在本地调试Tomcat 7.x/8.x webapp?,java,tomcat,intellij-idea,Java,Tomcat,Intellij Idea,我知道这在Ultimate Edition中是可能的,但是有没有办法在Community Edition中本地调试这些应用程序?History 如果您使用过IntelliJ Ultimate edition,您会发现可以添加一个Tomcat配置,您可以从IntelliJ中调试或运行Tomcat容器。通过一些额外的设置,您可以让IntelliJ社区版本为您做同样的事情 相关概念 Tomcat JMX 这是Tomcat的远程监视和管理工具。启用调试不需要与JMX相关的设置。尽管它对于通过JConso

我知道这在Ultimate Edition中是可能的,但是有没有办法在Community Edition中本地调试这些应用程序?

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

相关概念 Tomcat JMX 这是Tomcat的远程监视和管理工具。启用调试不需要与JMX相关的设置。尽管它对于通过JConsole()进行监视非常有用

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

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

请按照顺序进行更改

Tomcat侧相关更改
  • 如果Tomcat正在Tomcat bin文件夹中运行,请通过以下方式停止它:
    /shutdown
    /catalina stop

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

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

  • 提示:我使用了
    JAVA\u OPTS
    而不是
    CATALINA\u OPTS
    ,正如CATALINA.sh中的注释所示,我更喜欢使用
    JAVA\u OPTS
    。但是,可以以类似的方式使用CATALINA_OPTS来启用调试

  • 启动Tomcat:
  • /catalina.sh开始

    IntelliJ相关变化

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

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

    相关帖子和链接
  • (但仅对窗口非常有用)
  • (因为它是旧的,所以具有误导性)
  • (有用但过于复杂)
  • (有些有用)
  • (旧的和不完整的)

  • AmirHd的回答很有帮助,但我还有一个问题。当我更改JAVA_OPTS时,服务器不会像本文中那样关闭: 我通过改变来解决这个问题

    JAVA_OPTS
    

    适用于Windows用户 放

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

    catalina.bat run
    

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

    @AmirHd的回答非常有用。我使用的是Idea社区版本,实际上您根本不需要安装任何Tomcat插件

  • 在位于Tomcat bin目录中的
    catalina.sh
    (在Linux中)文件顶部添加下一行
  • 进入Idea
    Run
    菜单。选择编辑配置选项
  • 单击+符号,然后从下拉列表中选择
    Remote
  • 对于该远程调试器,配置Tomcat调试主机和端口。(Localhost,5005)如下所示并保存。
  • 启动你的雄猫。(通过下面的日志行,您将看到它处于调试模式。)
  • Alt+Shift+F9
    Run->debug
    选项,使用您的想法连接到该端口

  • 完全没有插件。

    谢谢你,阿米尔。您是否能够将tomcat配置为与“热部署”一起工作?这是有用的。谢谢。非常感谢,与Tomcat 8.5.9和IntelliJ IDEA CE 2016.3.1完美配合,JAVA_选项也可以在setenv.sh(setenv.bat for Windows)文件中设置。
    set "JAVA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"
    
    catalina.bat run
    
    JAVA_OPTS="$JAVA_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"
    
    Listening for transport dt_socket at address: 5005