文档 / IDE

运行与调试

使用 Maven、Gradle、Ant、npm 或 Cargo 构建,应用服务器,JDWP、CDP 和 PL/SQL 调试器,热替换和 JVM 诊断。

Yuli 使用项目自身的工具来编译、运行、测试和调试。停止构建、日志或测试时,会终止整个进程树。

构建工具

工具 项目
Maven 带 pom.xml 的 Java 项目
Gradle 带 build.gradle 的 Java 和 Kotlin 项目
Ant 带 build.xml 的 Java 项目
npm JavaScript 和 TypeScript(根据 lockfile 识别包管理器)
Cargo Rust

Yuli 还能直接理解未迁移的 Eclipse 项目。

工具链

Yuli 会检测 JDK、Maven 和 Gradle,提供下载缺失的组件,并显示它们的状态。在 项目 → 构建、运行和调试… 中配置:环境变量、VM 选项、Spring 配置文件、SDK、Maven、Gradle 和保存方式。

Maven / Gradle / Ant 面板

位于底部面板(Alt+7):筛选器、以标签形式显示的配置文件、一条展示生命周期各阶段的横条,以及按组分类的其他任务卡片。

运行

操作 快捷键
运行上一次的配置 Shift+F10
调试上一次的配置 Shift+F9
停止运行 Ctrl+F2
构建项目 Ctrl+F9
运行所有测试 Ctrl+Shift+F10
运行测试并统计覆盖率 Ctrl+Shift+F11

运行配置

类型:构建、运行、测试、清理、覆盖率、打包、自定义命令和 package.json 脚本。配置带有历史记录。

控制台

在 运行 面板中,项目的每一行 stack trace、每个 JSP 错误以及每个 Archivo.java:42 都可跳转到对应的文件和行。可以按级别、按包或 logger 筛选,或按 我的代码(只显示来自项目的内容)筛选。

应用服务器

在 项目 → 项目结构… → 服务器 中:

服务器 说明
Tomcat 更新类时重新加载上下文。
Jetty —
JBoss / WildFly —
WebLogic 开发模式下的域。
  • **Exploded 部署:**JSP、HTML、CSS、JS 和 .properties 在保存时即同步到服务器,无需重新部署。更新 会复制重新编译后的类。
  • 每个服务器都使用项目内的独立配置和独立端口运行。
  • 可以以运行或调试方式启动;调试器会自动连接。
  • 如果应用在 jakarta 服务器上使用 javax(或反之),会给出提醒。
  • 服务器的 API(Servlet、JSP)会加入编辑器的 classpath。

调试

语言 调试器
Java 与 JVM 原生 JDWP 客户端
Node.js Chrome DevTools Protocol(CDP)
Oracle PL/SQL Oracle 的 DBMS_DEBUG

功能

  • 变量树和对象检查,并在代码上内联显示值。
  • 易读的值:对象显示为 Owner{id=3, firstName="George", …},日期显示为 2026-10-15,集合显示其大小。
  • 条件断点、计数断点、logpoint 和异常断点。
  • 表达式求值和热修改变量值。
  • 调试测试。

单步执行

操作 快捷键
继续 F9
下一行(step over) F8
步入,仅限你的代码(step into) F7
强制步入 Alt+Shift+F7
跳出方法 Shift+F8
重新加载已修改的类(热替换) Ctrl+Alt+F10

热替换

在调试会话期间,使用项目的工具重新编译并重新定义已更改的类,无需重启。

PL/SQL

要在 Oracle 中调试,用户需要 DEBUG CONNECT SESSION 权限,且对象必须使用 COMPILE DEBUG 编译。

JVM 诊断

JVM 面板(位于底部面板的“更多”中)可连接到任何本地 Java 进程。

工具 作用
线程转储 按状态分组,并突出显示阻塞和死锁。
内存直方图 按类统计内存。重复执行时会显示哪些部分在增长(内存泄漏)。
堆转储 保存 .hprof 文件,供 Eclipse MAT 或 VisualVM 使用。
分析 CPU 与内存 使用 Flight Recorder:开销最大的方法、调用树、内存分配和 GC。如果 JVM 不支持,则通过线程采样进行分析。

标签页:CPU、内存、分配 和 线程。筛选器 仅项目代码 只保留你的代码,项目中的栈帧可跳转到准确的行。

测试与覆盖率

  • 测试资源管理器运行测试,并在 测试 面板中报告结果。
  • 覆盖率显示在编辑器边栏中:已覆盖、未覆盖和部分覆盖。
  • 在 Gradle 中,无需修改构建配置即可生成覆盖率,多模块项目同样适用。

与智能体协作

说一句“编译、测试并启动”,智能体就会使用 yuli_verify:完整构建、运行所有测试,并以默认配置文件启动一次应用。如果应用因为某个环境变量或配置文件而无法启动,智能体可以自行排查,只在需要机密值时才向你询问。