【问题标题】:Failed to connect to remote VM. Connection refused. when trying to debug remote java application in Flash Builder 4.7无法连接到远程虚拟机。拒绝连接。尝试在 Flash Builder 4.7 中调试远程 Java 应用程序时
【发布时间】:2013-09-07 02:23:33
【问题描述】:

在某一时刻,远程调试曾经有效。但是对于我的一生,我似乎无法弄清楚是什么破坏了它。

我有一个 flex/Java 应用程序。有一个启动 tomcat 服务器的包装器。我修改了 wrapper.conf 文件以包含

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

在我的 flex 调试配置中,在左侧,我有远程 Java 应用程序。在右边,我有标准(Socket Attach)作为连接类型,127.0.0.1(我也尝试过 localhost)作为主机,8000 作为端口。

以下是堆栈跟踪。

!ENTRY org.eclipse.jdt.launching 4 113 2013-09-03 11:30:49.109 !MESSAGE 无法连接到远程 VM。拒绝连接。 !堆栈 0 java.net.ConnectException:连接被拒绝:连接在 java.net.PlainSocketImpl.socketConnect(Native Method) 在 java.net.PlainSocketImpl.doConnect(未知来源)在 java.net.PlainSocketImpl.connectToAddress(未知来源)在 java.net.PlainSocketImpl.connect(Unknown Source) at java.net.SocksSocketImpl.connect(Unknown Source) 在 java.net.Socket.connect(Unknown Source) 在 java.net.Socket.connect(Unknown Source) 在 java.net.Socket.(未知来源)在 java.net.Socket.(未知来源)在 org.eclipse.jdi.internal.connect.SocketTransportService$2.run(SocketTransportService.java:136) 在 java.lang.Thread.run(Unknown Source)

这是调试配置的屏幕截图。

【问题讨论】:

  • 在调试配置方面,我不明白您所说的“左侧”和“右侧”是什么意思。如果您指的是 Flash Builder/Eclipse 屏幕,您可以考虑发布屏幕截图。
  • 确保您仍在运行调试 Flash Player(例如,Chrome 更新可能安装了新版本的 Flash Player 或其他东西)。
  • Reboog711,根据您的要求,我的帖子中包含了屏幕截图。 Sunil,调试 Flash 播放器似乎正在运行,因为 Flex 断点确实有效,我可以调试代码的 Flex 部分。
  • 您应该检查端口是否真的打开,例如与netstat -n -a -p tcp 应该有类似TCP 0.0.0.0:8000 的行
  • 不,我没有看到 TCP 0.0.0.0:8000。事实上,我在列表中没有看到任何与端口 8000 相关的内容。我尝试在防火墙的入站规则中打开该端口(我有 Windows 7),然后单击调试配置屏幕中的调试按钮。我仍然收到“无法连接到 VM”的消息,并且 netstat 仍然没有显示 TCP 0.0.0.0:8000。

标签: java eclipse apache-flex flash-builder flexbuilder


【解决方案1】:

如果您验证 Eclipse 配置设置并看到主机名/IP 和端口名都正确,请尝试重新启动 eclipse

【讨论】:

    【解决方案2】:

    必须正确启动Tomcat的远程模式,否则只设置相关变量不能解决问题。我的解决方案如下,适用于我的情况: Connection refused problem solution

    【讨论】:

      【解决方案3】:

      对于“连接被拒绝”这个错误,Eclipse 不是很冗长。必须在这里检查三个条目。
      1.全限定主机名或IP
      2.正确的端口号。
      3. Tomcat 级别如下:

      某些版本的 Tomcat 有“dt_shmem”条目而不是“dt_socket”。在 catalina.bat 中将其更改为 dt_socket。 该行应如下所示:
      set JPDA_TRANSPORT=dt_socket

      【讨论】:

        【解决方案4】:

        经过一番挣扎,我终于弄明白了。我必须进行两项更改。

        1. 我将 tomcat.enable.debug=true 添加到我的 catalina.properties 文件中。
        2. 在我的 wrapper.conf 中,我有以下几行。

          wrapper.java.additional.9="-Xmx2048m" wrapper.java.additional.10="-XX:MaxPermSize=1024m"

        我的 MaxPermSize 设置为比 Xmx 更小。我不得不将 1024 更改为 2048。

        然后我重新启动了我的 tomcat,它终于工作了!

        【讨论】:

          【解决方案5】:

          每个调试参数必须单独放在一行中,在 -vm 参数之后。这应该可以解决问题:

          -vmargs
          -Xdebug 
          -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000
          

          【讨论】:

          • 进行更改后,我的服务器服务甚至无法启动。
          • 更改后,服务无法启动,因为它给出了 jvm 选项的语法错误。
          猜你喜欢
          • 2012-06-17
          • 1970-01-01
          • 2015-02-08
          • 2012-08-26
          • 1970-01-01
          • 2015-07-19
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多