握手失败 - 在 Intellij 中调试 Solr 时连接过早关闭错误
Posted
技术标签:
【中文标题】握手失败 - 在 Intellij 中调试 Solr 时连接过早关闭错误【英文标题】:Handshake failed - connection prematurally closed error when debugging Solr in Intellij 【发布时间】:2015-08-31 17:23:19 【问题描述】:所以我打算在 Intellij 社区版上调试我的 Solr 过滤器插件。在我使用此命令从命令提示符运行程序后
java -jar start.jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8983
我用这个配置启动了我的 Intellij 调试器:
Transport : socket
Debugger mode : attach
Host : localhost
Port : 8983
但是当我运行调试器时,我得到了这个错误:
Error running Debugger: Unable to open debugger port (localhost:8983):
java.io.IOException "handshake failed - connection prematurally closed"
知道如何解决这个问题吗?
【问题讨论】:
您是否尝试检查防火墙设置? 我已经解决了这个问题。我应该把“”放在参数上。但是谢谢 【参考方案1】:它帮助了我,至少在 Intellij IDEA 中:
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=0.0.0.0:5005
尝试添加ip0.0.0.0
。
【讨论】:
【参考方案2】:我在 Docker 容器中使用 OpenJDK 11 时遇到此错误,将环境变量 JAVA_DEBUG_PORT 设置为“*:5005”对我有用。
【讨论】:
【参考方案3】:我在尝试访问 Docker 容器上的调试端口时遇到了该错误。
如果您尝试访问 Docker 容器内的调试端口,请确保将端口指定为 *:5005
例如
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005
这是自 Java 9 以来发生的变化。
见:REGRESSION: Remote debugging does not work on JDK 9
这不是错误。这是一种安全。
JDK-8041435 之前
如果您有一个具有 EXT 和 INT 接口的服务器并以地址 = 5900 启动 Java 进程,它将绑定到这两个接口并允许全世界的任何人连接到您的 Java 进程,除非您在防火墙上阻止它。
在 JDK-8041435 套接字传输之后尝试猜测 localhost 并仅绑定到 localhost。 IE。默认情况下,套接字传输仅在客户端和服务器位于同一台机器上时才有效。猜测正确的本地主机并非易事。因此,由于网络设置,同一机器配置在某些情况下可能无法正常工作。
您可以使用 *(星号)恢复旧的、不安全的行为 IE。 -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=*:5900 应该完全像 JDK-8041435 之前一样工作
但建议尽可能明确指定要绑定的 ip 地址。
还有JDWP socket connector accept only local connections by default
JDWP 套接字连接器已更改为仅在代理命令行上未指定 IP 地址或主机名时才绑定到 localhost。星号 (*) 的主机名可用于实现旧行为,即将 JDWP 套接字连接器绑定到所有可用接口;这不安全,不推荐。
【讨论】:
【参考方案4】:您忘记在java
命令行上指定-Xdebug
。
编辑:如
java -jar start.jar -Xdebug -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8983
【讨论】:
它与java版本有关。它对 Java >= 6 没有任何作用。请参阅这篇文章:***.com/questions/975271/…【参考方案5】:应该是这样的,
java "-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8983" -jar start.jar
现在可以使用了
【讨论】:
在 intelli j 2019.2.4 中,我无法编辑命令行参数。我该如何解决 ?我的命令行参数是 -> -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:8787 并且我不断收到以下错误 -> 运行“测试”时出错:无法打开调试器端口(localhost:8787): java.io.IOException "握手失败 - 连接提前关闭" 以防万一它对某人有帮助,我在 android Studio(基于 Intellij)中突然出现了这个错误,而我根本没有接触构建配置。完全关闭并再次启动 IDE 后,错误消失的速度与它出现时一样快。 对于在 Intelli IDEA 中更新命令行时遇到问题的人,你不应该更新 IntelliJ IDEA 本身的值。如果您正在使用远程应用程序的 tomcat 或 java-options 或命令行参数,则需要从 IntelliJ idea 中复制此值并将其添加到 tomcat 中的 java-options 中。以上是关于握手失败 - 在 Intellij 中调试 Solr 时连接过早关闭错误的主要内容,如果未能解决你的问题,请参考以下文章
在 Solana 程序部署失败后,如何恢复用于出租的 SOL?
SSL 握手失败 - 一个威瑞信链证书 - 包含两个 CA 签名证书和一个自签名证书