求助:KSP日志位置及Bazel环境下KSP调试日志输出问题
Bazel环境下KSP日志位置及调试方法
遇到的错误信息
error: [ksp] No providers found in processor classpath.
error: error occurred in KSP, check log for detail
问题背景
已为依赖中存在的类指定processor_class,添加--subcommands --verbose_failures参数未获取有效信息,在bazel-out目录未找到日志;后续通过bazel info output_base返回路径找到worker-0-KotlinKsp.log,但文件大小为0。
KSP日志的默认位置
- 日志文件默认存储在Bazel的输出根目录下,执行以下命令可获取该路径:
bazel info output_base - 日志文件名格式为
worker-<数字>-KotlinKsp.log,例如你找到的worker-0-KotlinKsp.log。
日志为空的排查与解决
如果日志文件为空,通常是KSP在初始化阶段就触发错误,尚未写入日志就退出,可按以下方向排查:
- 检查
processor_class配置准确性:确保指定的类全路径与你的KSP处理器类完全一致,无拼写或包名错误。 - 验证处理器依赖的引入方式:确认包含KSP处理器的Bazel目标已正确关联到需要注解处理的目标,比如通过
deps或标记为processor类型依赖。 - 重启Bazel worker进程:执行
bazel shutdown关闭所有后台worker,再重新执行构建,可能会触发日志正常写入。
强制输出KSP日志的额外手段
- 添加
--worker_verbose参数构建:该参数会让KSP worker输出更详细的运行信息,可能填充空日志文件:bazel build --worker_verbose //your/target:label - 禁用worker模式运行:添加
--strategy=KotlinKsp=local参数,让KSP以本地进程方式运行,日志会直接输出到终端的标准错误流(stderr)中:bazel build --strategy=KotlinKsp=local //your/target:label
内容的提问来源于stack exchange,提问作者West_JR
相关产品推荐
相关产品推荐

