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

LazyVim中修改jdtls默认root_dir检测配置的问题求助

解决LazyVim中修改jdtls root_dir的问题

你的代码存在几个关键问题:

  1. 配置结构错误:LazyVim中nvim-jdtls的opts不需要嵌套jdtls函数,直接在opts下定义LSP配置项即可。
  2. root_dir类型错误:默认的root_dir是一个目录检测函数(由lspconfig.util.root_pattern生成),不是数组,不能用table.insert修改。
  3. 路径格式错误:你写的{{'.git', 'mvnw', 'gradlew'}}多了一层嵌套,正确的参数是直接传递这些字符串。

正确的配置代码

在lua/plugins/jdtls-change-root.lua中使用以下代码:

return {
  {
    "mfussenegger/nvim-jdtls",
    ---@type lspconfig.options.jdtls
    ---@diagnostic disable-next-line: missing-fields
    opts = {
      root_dir = require("lspconfig.util").root_pattern(".git", "mvnw", "gradlew"),
    },
  },
}

说明

  • require("lspconfig.util").root_pattern(...)会生成一个检测函数,从当前文件目录向上查找,找到包含指定文件/目录(.git、mvnw、gradlew)的最近目录作为LSP根目录。
  • 该配置直接覆盖jdtls默认的root_dir检测规则,完全匹配你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 15:02:12