You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调试依赖Apache Calcite的IDEA项目时,如何导航到Calcite代码?

解决调试Apache Calcite时无法查看源码/显示“Unknown Source”的问题

原因分析

Apache Calcite使用Janino动态生成字节码文件,默认不会附带调试信息,这会导致调试时调用栈显示“Unknown Source”,IntelliJ也无法直接导航到对应源码。

解决步骤

1. 正确添加Janino调试JVM参数

把以下参数添加到应用运行/调试配置的VM options里(不是IntelliJ全局VM参数):

-Djanino.source_debugging.enable=true

这个参数会强制Janino生成带调试信息的字节码,让调用栈能关联到源码位置。

2. 关联Calcite源码包

IntelliJ无法跳转源码大概率是没关联Calcite的源码Jar:

  • 按Ctrl+Alt+Shift+S打开Project Structure
  • 进入Libraries,找到所有Calcite相关依赖
  • 右键依赖,选择Download Sources,等IntelliJ自动下载并关联

3. 强制反编译字节码

如果源码下载失败还是看不到内容:

  • 在调用栈里右键Calcite的方法,直接选Decompile
  • 或者去Settings→Build, Execution, Deployment→Compiler→Java Compiler,确认Use compiler是javac,并勾选Delegate IDE build/run actions to gradle/maven(用构建工具的话)

4. 处理动态生成类的特殊情况

Calcite有些类是Janino动态生成的,本身没有对应源码文件:

  • 调试时用Evaluate Expression查看动态类的内容
  • 调整Calcite日志级别为DEBUG,让它把动态生成的代码输出到本地文件,方便排查

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 05:02:36