我已经进行了一段时间的黑客和谷歌搜索,找到了几个看起来是针对旧版本IntelliJ和各种应用服务器编写的Stack Overflow线程。通常它们会告诉你输入
java -Xdebug -Xrunjdwp:transport=dt_socket,address=51887,suspend=n,server=y
一个答案建议使用类似以下的内容
-agentlib:jdwp:transport=dt_socket,address=51887,suspend=n,server=y
但是我得到了这个:
Error occurred during initialization of VM
Could not find agent library: libjdwp:transport.jnilib (searched /Library/Java/JavaVirtualMachines/1.6.0_37-b06-434.jdk/Contents/Libraries:/System/Library/Java/Extensions:/Library/Java/Extensions:.)
然后在上述两种情况之一之后,他们会告诉你类似于“编辑配置> jetty > 远程,并输入localhost、51887”(端口号不同)的内容。
然而,在版本12中,选择远程后您会看到一个拥有大量选项的页面,并要求您输入JNDI端口,而不是另一个选项卡上的jdwp端口,它实际上建议使用上述jdwp参数。
研究JNDI端口部分通常会产生如下命令行参数添加说明...
-Dcom.sun.management.jmxremote= \
-Dcom.sun.management.jmxremote.port=1099 \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=false\
我也尝试过这样做,可以使用lsof看到被Java占用的1099端口,并且可以通过telnet连接到1099端口,所以我知道JVM正在侦听。(我们将尝试不担心这似乎是说,打开一个端口,任何人都可以在没有密码的情况下通过网络向您的计算机安装任意Java代码)。
然而,在Intellij中,每当我尝试部署和调试时,它会给我以下消息:
我还尝试过删除构件、禁用make,并尝试仅连接调试器,但它仍然给我相同的红色气球和错误消息,因此显然需要JNDI(端口1099)部分。
有人看到我做错了什么,或者知道其他我应该做的事情来使它工作吗?
(我想知道是否类似于这个问题:http://youtrack.jetbrains.com/issue/IDEA-65746 jboss问题) 编辑:感谢这个谷歌小组的帖子,我发现如果您不指定“编辑配置> + > jetty > 远程”,而是选择“编辑配置> + > 远程”,则可以连接调试器,但我想要的是调试和部署,所以这只是一个半解决方案。