现已解决 - 请参阅问题结尾。
我正在尝试使用IntelliJ Community Edition的调试器调试Java进程。套接字正在侦听 - 但是当我尝试连接调试过程时会显示以下内容 '连接到目标VM,地址:':8003',传输:'socket' 它永远不会连接到VM,我无法调试。
我已经转移到Windows 7 64位PC - 在我的旧XP机器上,可以连接和调试这个Java进程(这是我构建和维护的应用程序)。
如果没有进程连接,您将获得标准的“连接被拒绝:连接”错误。 Netstat还会显示应用程序运行时端口正在侦听。
TCP 0.0.0.0:8003:0 LISTENING
调试应用程序的args -Xrunjdwp:运输= dt_socket,服务器= Y,暂停= n时,地址= 8003 -Xdebug
如果我尝试从远程计算机上的IntelliJ运行调试会话,我可以连接到本地计算机上运行的进程,然后进行调试。 如果我在远程计算机上运行Java应用程序,并在本地计算机上使用IntelliJ,我可以进行调试。 只有当我在同一台机器上运行和调试它失败时 - 不幸的是,这是我几乎所有时间都需要做的事情。
我发现的唯一类似问题是2004年,与带空格的文件路径有关,而且是NetBeans,而不是IntelliJ。我已经重建并重新运行我的应用程序,确保路径中没有空格或下划线,没有欢乐。
我的intelliJ调试设置是在套接字上调试我的本地机器,附加模式端口8003 - 抱歉作为新用户我无法附加图像。
我尝试过的其他事情:
卡住。任何帮助非常感谢。
谢谢
史蒂夫
解决
好吧,有一天未能解决,我发现答案后20分钟找到答案。无效的JNI签名字符,仅在调试时被选中。通过在调试时添加此arg来解决。
-Dcom.sun.xml.bind.v2.bytecode.ClassTailor.noOptimize =真
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6547438
感谢您的帮助。仍然不知道为什么它在远程调试时会起作用,但之前不在本地调试。
答案 0 :(得分:1)
这听起来像是一个奇怪的防火墙问题。
您似乎应该可以尝试telnet localhost 8003
,但它应该会失败。这意味着没有任何东西可以连接到该端口上的应用程序。
编辑:如果共享内存确实有效,并且您无法通过telnet连接它,那么运行应用程序的方式就会出现问题。
如果应用程序未运行,您将收到此类错误。
您可以尝试调试IntelliJ中的一个简单程序吗?