1. 概述
本文将介绍并对比调试Quarkus应用的多种方案。这些方案的核心机制相同:都需要调试客户端(通常是IDE)连接到运行中的JVM,通过设置断点、查看堆栈跟踪和变量进行调试。但启动应用(JVM)的方式存在差异。
2. 调试Java应用
Quarkus基于Java,因此可采用标准Java调试方案。常见方式包括:
- 直接在IDE中运行
main
方法,IDE调试器自动连接 - 构建JAR包后通过命令行启动(示例使用Maven构建):
java \
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005 \
-jar target/quarkus-app/quarkus-run.jar
⚠️ 若使用Docker/podman运行容器,需将5005端口映射到宿主机
应用启动后,IDE通过5005端口连接调试(IntelliJ操作路径:Run > Edit Configurations > Remote JVM Debug
)。
3. Quarkus开发模式
调试Quarkus应用的最佳实践是启动开发模式(Dev Mode)。该模式不仅开启JVM调试(监听5005端口),还自动激活:
- Dev UI
- Dev Services
- 热重载(Live Reload)
- 持续测试(Continuous Testing)
完整特性参考Quarkus官方文档
3.1 命令行启动
通过以下命令启动开发模式:
# Maven
mvn quarkus:dev
# Quarkus CLI
quarkus dev
可添加可选参数:
-Ddebug=<port>
自定义调试端口(默认5005)-Dsuspend
暂停应用执行,等待调试器连接
✅ IDE连接方式与第2节相同
3.2 IDE启动
现代IDE支持一键启动Quarkus应用并自动连接调试器。IntelliJ安装以下插件后可获得专用配置:
若未安装插件,可通过自定义main
方法实现调试启动:
@QuarkusMain
public class MyQuarkusApplication {
public static void main(String[] args) {
Quarkus.run(args);
}
}
3.3 远程开发模式
可将Quarkus应用部署到容器或Kubernetes环境(如OpenShift)进行远程调试。操作步骤:
添加OpenShift扩展:
# Maven mvn quarkus:add-extension -Dextensions="io.quarkus:quarkus-openshift" # Quarkus CLI quarkus ext add io.quarkus:quarkus-openshift
部署到OpenShift(启用热重载): ```bash
登录OpenShift
oc login https://api.openshift.example.com:6443 --token=xxxxx
创建项目
oc new-project quarkus-remote
部署应用(Mutable JAR格式)
mvn clean package -DskipTests \
-Dquarkus.kubernetes.deploy=true
-Dquarkus.package.jar.type=mutable-jar
-Dquarkus.live-reload.password=dev12345
-Dquarkus.container-image.build=true
-Dquarkus.kubernetes-client.trust-certs=true
-Dquarkus.kubernetes.deployment-target=openshift
-Dquarkus.openshift.route.expose=true
-Dquarkus.openshift.env.vars.quarkus-launch-devmode=true
-Dquarkus.openshift.env.vars.java-enable-debug=true
Quarkus CLI等效命令:quarkus build -D...
部署后可在OpenShift项目中查看资源:

3. 启动远程调试:
```bash
# Maven
mvn quarkus:remote-dev \
-Dquarkus.package.jar.type=mutable-jar \
-Dquarkus.live-reload.password=dev12345 \
-Dquarkus.live-reload.url=http://quarkus-remote-quarkus.apps.openshift.example.com
# Quarkus CLI等效命令:quarkus remote-dev -D...
✅ IDE连接方式与第2节相同
4. 总结
本文介绍了Quarkus应用的本地和远程调试方案。容器化调试特别适合排查环境差异问题,简单粗暴但有效。建议优先使用开发模式(Dev Mode),它集成了调试、热重载等开发利器,能显著提升开发效率。