You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Quarkus应用远程调试握手失败问题求助:Debugger failed to attach错误排查

解决Quarkus调试时"handshake failed - expected JDWP-Handshake"错误

嘿,我之前调试Quarkus应用时也踩过这个一模一样的坑,给你捋捋问题出在哪以及怎么解决:

错误原因

你完全搞混了两个端口的作用:

  • 8080是Quarkus提供HTTP API服务的端口,所有API请求都应该往这个端口发;
  • 5005是Quarkus开启的JDWP调试端口,它只负责和IDE的调试器(比如IntelliJ的Remote Debug)建立调试会话,根本不处理任何HTTP请求。

你直接用5005端口调用API,相当于给调试端口发了GET /api/domai这样的HTTP请求,它只认识JDWP协议的握手信息,自然会报错说"handshake failed - received >GET /api/domai< - expected >JDWP-Handshake<"。

正确的调试步骤

  1. 保持Quarkus dev模式运行:确保控制台已经输出Listening for transport dt_socket at address: 5005,这说明调试端口已经就绪。
  2. 检查IntelliJ的Remote Debug配置:
    • 确认配置的HostlocalhostPort5005(千万别写成8080);
    • 调试模式选择Attach to remote JVM(因为Quarkus进程已经启动,我们需要把调试器挂载上去);
    • 其他配置保持默认即可,不用瞎改。
  3. 启动Remote Debug:点击IntelliJ的调试按钮,等待控制台提示Connected to the target VM, address: 'localhost:5005', transport: 'socket',这就说明调试连接成功了。
  4. 正常调用API:还是用8080端口发送API请求,这时候你在IntelliJ里设置的断点就会正常触发啦!

额外提醒

如果之后还出现类似问题,先第一时间确认自己是不是把调试端口和服务端口搞混了——Quarkus默认的调试端口是5005,HTTP服务端口是8080,两者的用途完全不同哦。

内容的提问来源于stack exchange,提问作者Andre Carrilho

火山引擎 最新活动