【问题标题】:Unable to open debugger port in IntelliJ无法在 IntelliJ 中打开调试器端口
【发布时间】:2012-09-29 08:37:36
【问题描述】:

无法在 intellij 中打开调试器端口。 端口号 9009 与应用程序配置文件中设置的端口号匹配。

<java-config debug-options="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9009" system-classpath="" native-library-path-prefix="D:\Project\lib\windows\64bit" classpath-suffix="">
    <jvm-options>-XX:MaxPermSize=192m</jvm-options>
    <jvm-options>-client</jvm-options>
    <jvm-options>-XX:+UnlockDiagnosticVMOptions</jvm-options>
    <jvm-options>-XX:+LogVMOutput</jvm-options>
    <jvm-options>-XX:LogFile=${com.sun.aas.instanceRoot}/logs/jvm.log</jvm-options>
    <jvm-options>-Djava.endorsed.dirs=${com.sun.aas.installRoot}/modules/endorsed${path.separator}${com.sun.aas.installRoot}/lib/endorsed</jvm-options>
    <jvm-options>-Djava.security.policy=${com.sun.aas.instanceRoot}/config/server.policy</jvm-options>
    <jvm-options>-Djava.security.auth.login.config=${com.sun.aas.instanceRoot}/config/login.conf</jvm-options>
    <jvm-options>-Dcom.sun.enterprise.security.httpsOutboundKeyAlias=s1as</jvm-options>
    <jvm-options>-Djavax.net.ssl.keyStore=${com.sun.aas.instanceRoot}/config/keystore.jks</jvm-options>
    <jvm-options>-Djavax.net.ssl.trustStore=${com.sun.aas.instanceRoot}/config/cacerts.jks</jvm-options>
    <jvm-options>-Djava.ext.dirs=${com.sun.aas.javaRoot}/lib/ext${path.separator}${com.sun.aas.javaRoot}/jre/lib/ext${path.separator}${com.sun.aas.instanceRoot}/lib/ext</jvm-options>
    <jvm-options>-Djdbc.drivers=org.apache.derby.jdbc.ClientDriver</jvm-options>
    <jvm-options>-DANTLR_USE_DIRECT_CLASS_LOADING=true</jvm-options>
    <jvm-options>-Dcom.sun.enterprise.config.config_environment_factory_class=com.sun.enterprise.config.serverbeans.AppserverConfigEnvironmentFactory</jvm-options>
    <jvm-options>-Dosgi.shell.telnet.port=4766</jvm-options>
    <jvm-options>-Dosgi.shell.telnet.maxconn=1</jvm-options>
    <jvm-options>-Dosgi.shell.telnet.ip=127.0.0.1</jvm-options>
    <jvm-options>-Dfelix.fileinstall.dir=${com.sun.aas.installRoot}/modules/autostart/</jvm-options>
    <jvm-options>-Dfelix.fileinstall.poll=5000</jvm-options>
    <jvm-options>-Dfelix.fileinstall.debug=1</jvm-options>
    <jvm-options>-Dfelix.fileinstall.bundles.new.start=true</jvm-options>
    <jvm-options>-Dorg.glassfish.web.rfc2109_cookie_names_enforced=false</jvm-options>
    <jvm-options>-XX:NewRatio=2</jvm-options>
    <jvm-options>-Xmx2048m</jvm-options>
  </java-config>

IntelliJ 中的配置:

当我尝试为此应用程序启用远程调试时,出现以下错误:

【问题讨论】:

  • 端口似乎没有打开。您的应用程序日志文件说明了什么?通常它会这样说:Listening for transport dt_socket at address: 9009.
  • @maba :端口是打开的,因为我运行了 telnet 192.168.2.100 9009 。但是 netstat 没有工作,这意味着 glassfish 配置有问题。所以我在其中添加了以下配置参数我在下面的回答中的 glassfish 中的 java-config 并且它有效。感谢您的贡献。
  • 确保您使用正确的run configuration

标签: java debugging intellij-idea


【解决方案1】:

在 glassfish 配置的这一行中添加以下参数 debug-enabled="true"。 示例:

<java-config  debug-options="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9009" debug-enabled="true"
  system-classpath="" native-library-path-prefix="D:\Project\lib\windows\64bit" classpath-suffix="">

启动和停止使用此配置的 glassfish 域或服务。

【讨论】:

  • 如果你不使用 glassfish 怎么办?
【解决方案2】:

我希望您的问题现在已经解决了。如果没有,试试这个......看起来你的应用程序和 IDEA 都有server=y。 IDEA 应该是server=n。此外,(IDEA) 客户端应该有一个包含主机名和端口的地址,例如,address=127.0.0.1:9009

【讨论】:

    【解决方案3】:

    这个对我有用—— 如果问题仍然存在(如果您没有使用 glassFish 服务器),则关闭您的 Jidea 并停止服务器。这将禁用端口连接。然后启动您的服务器和 Jidea,这将开始与端口的新连接,从而解决问题。

    【讨论】:

      【解决方案4】:

      如果您的端口已被其他程序使用,您可能需要更改调试器端口。这样做:

      • 运行
      • 编辑配置
      • 启动/连接选项卡
      • 调试
      • 在此处更改端口

      或者,也许在其他版本中:

      • 运行
      • 编辑配置
      • 远程 > 左侧列表中的远程调试
      • 配置选项卡,设置部分
      • 端口:在此处更改端口

      【讨论】:

      • 如果您不使用默认配置,而是进行自定义远程配置怎么办?
      • 你的意思是在 localhost:8000 上使用远程调试器?如果是这样你需要在你的应用程序的JVM中指定调试选项(Run),但问题是一样的,你需要一个空闲端口。
      • @Pleymor 我在 Mac OSX 上的 Android Studio 2.2.2 中的运行 > 编辑配置中没有看到任何“启动/连接”选项卡。这有改变吗?
      • @MrColes 我猜它只适用于IntelliJ IDEA 而不是Android Studio
      • 为我使用了 eclipse。我在将 Idea 设置为 5005 后遇到了这个问题,但由于某种原因,我什至无法再次使用 Idea 进行跑步。将配置更改为 5006,然后它就可以工作了。
      【解决方案5】:

      我遇到了同样的问题,这个解决方案也为我解决了问题:在 Intellij 调试配置中提供 IP 127.0.0.1 而不是主机名“localhost”,以防您使用此主机名。

      【讨论】:

      • 经过数小时的头撞墙后,这也为我解决了这个问题,这太荒谬了。为什么任何文档中都没有提到这一点???就我而言,假设所有其他方向都正确遵循,这是使用 IntelliJ 进行远程调试的#1 真正问题,它只是无法正确地 grok localhost。
      • 如果您在 VPN 后面工作并且输入 127.0.0.1 不能解决问题,请尝试使用 VPN 提供商分配给您的 IP(在我的情况下有效)
      【解决方案6】:

      对我来说,问题是 catalina.sh 没有执行权限。 Intellij 中出现“无法在 intellij 中打开调试器端口”消息,但它在某种程度上掩盖了之前日志中出现的“无法执行 catalina.sh”错误。

      【讨论】:

        【解决方案7】:

        答案很简单, 我也遇到了这个问题,最后我得到了完美的解决方案。 Create Debug Create Remote debug with following configuration 首先通过调试运行。 它让你等待套接字 5005 然后远程调试运行

        【讨论】:

          【解决方案8】:

          尝试使用 telnet 连接,如果可以连接,则显示如下:

          $telnet 10.238.136.165 9999 正在尝试 10.238.136.165... 连接到 10.238.136.165。 转义字符是 '^]'。 连接被外部主机关闭。

          如果端口不可用(因为其他人已经连接到它或端口未打开等),那么它会显示如下所示的内容:

          $telnet 10.238.136.165 9999 正在尝试 10.238.136.165... telnet:连接到地址 10.238.136.165:连接被拒绝 telnet:无法连接到远程主机

          所以我认为需要看看:

          • 应用程序是否是监听端口的属性

          • 或其他人已经连接到它

          还可以先尝试连接该 m/c 本身,例如 $telnet 本地主机 9999

          【讨论】:

            【解决方案9】:

            使用给定命令运行您的 Spring Boot 应用程序,以便在服务器在端口 8090 上启动时启用端口 6006 上的调试:

            mvn spring-boot:run -Drun.jvmArguments='-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=6006' -Dserver.port=8090
            

            【讨论】:

              【解决方案10】:

              设置 MAVEN_OPTS。它应该工作!

              export MAVEN_OPTS="-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=4000,server=y,suspend=n"

              mvn spring-boot:run -Dserver.port=8090

              【讨论】:

                【解决方案11】:

                可能会发生此错误 Tomcat 已在运行。因此,如果您要求 Intellij 启动它(默认),请确保 Tomcat 没有在后台运行。

                另外,检查完整的输出窗口是否有更多错误。因为在这个错误之前可能有一个更有用的错误(就像我刚才的配置一样)

                【讨论】:

                  【解决方案12】:

                  您必须设置 CHMOD +x(对 *.sh 或 *.bat 文件执行)。比如我用的是macOS

                  cd /Users/donhuvy/Documents/tools/apache-tomcat-9.0.12/bin
                  sudo chmod +x *.sh
                  

                  然后 IntelliJ IDEA 和 Apache Tomcat 运行或调试就好了。

                  【讨论】:

                  • 就是这样。谢谢!
                  【解决方案13】:
                  1. glassfish\domains\domain1\config\domain.xml启动服务器之前设置
                  <java-config classpath-suffix="" debug-options="-agentlib:jdwp=transport=dt_socket,address=9009,server=y,suspend=n" java-home="C:\Program Files\Java\jdk1.8.0_162" debug-enabled="true" system-classpath="">
                  

                  或在 http://localhost:4848/common/index.jsf 中设置 debug-enabled="true" server=y,suspend=n

                  1. 在当前的 Idea 2018 - 服务器运行配置 - 调试 - 端口 - 地址

                  【讨论】:

                    【解决方案14】:

                    您的服务/应用程序可能已经在运行。在搜索中输入服务,您将获得服务列表。停止你的,然后再试一次。

                    【讨论】:

                    • 这可以是评论而不是答案。请检查这个社区的规则。
                    【解决方案15】:

                    我遇到了同样的问题,我只需要从 URL 中删除 HTTP 协议。而已。

                    我希望它对你有用。

                    【讨论】:

                      【解决方案16】:

                      我也曾经有过这个问题。 我的解决方案是通过终止使用该端口的应用程序来解决此问题。 Here 是一篇文章,教我们如何检查哪个应用程序正在使用哪个端口,找到它并杀死/关闭它。

                      【讨论】:

                        【解决方案17】:

                        只需再次点击调试图标即可在几秒钟内解决我的问题。

                        【讨论】:

                          【解决方案18】:

                          确保在 File --> Project Structure (Project | SDKs) 下为您的应用指定 SDK 和 Project SDK

                          【讨论】:

                            猜你喜欢
                            • 2014-12-04
                            • 1970-01-01
                            • 2017-03-27
                            • 1970-01-01
                            • 1970-01-01
                            • 2018-12-18
                            • 1970-01-01
                            • 1970-01-01
                            • 1970-01-01
                            相关资源
                            最近更新 更多