mfussenegger / nvim-jdtls

Extensions for the built-in LSP support in Neovim for eclipse.jdt.ls
GNU General Public License v3.0
1.05k stars 61 forks source link

fail to open jdt source #506

Closed y1rn closed 1 year ago

y1rn commented 1 year ago

LSP client configuration

local config = {
  project = {},
  cmd_env = {
    JAVA_HOME = '/usr/lib/jvm/java-17-openjdk',
  },
  cmd = {
    'jdtls',
    '--jvm-arg=' .. string.format('-javaagent:%s', getPackage('jdtls') .. '/lombok.jar'),
    '--jvm-arg=-Djava.import.generatesMetadataFilesAtProjectRoot=false',
    '--jvm-arg=-Xms2G',
    '--jvm-arg=-Xmx8G',
    '--jvm-arg=-Xmn512m',
  },
  -- capabilities = require 'lsp.config'.capabilities,
  settings = {
    java = {
      eclipse = {
        downloadSources = true,
      },
      configuration = {
        runtimes = {
          {
            name = 'JavaSE-1.8',
            path = '/usr/lib/jvm/java-8-openjdk',
            default = true,
          },
          {
            name = 'JavaSE-11',
            path = '/usr/lib/jvm/java-11-openjdk',
          },
          {
            name = 'JavaSE-17',
            path = '/usr/lib/jvm/java-17-openjdk',
          },
          {
            name = 'JavaSE-20',
            path = '/usr/lib/jvm/java-20-openjdk',
          },
        },
      },
      updateBuildConfiguration = 'interactive',
      maven = {
        downloadSources = true,
      },
      implementationsCodeLens = {
        enabled = true,
      },
      referencesCodeLens = {
        enabled = true,
      },
      references = {
        includeDecompiledSources = true,
      },
      format = {
        enabled = false,
      },
    },
    signatureHelp = { enabled = true },
    completion = {
      favoriteStaticMembers = {
        -- 'org.hamcrest.MatcherAssert.assertThat',
        -- 'org.hamcrest.Matchers.*',
        -- 'org.hamcrest.CoreMatchers.*',
        'org.junit.jupiter.api.Assertions.*',
        'java.util.Objects.requireNonNull',
        'java.util.Objects.requireNonNullElse',
        'org.mockito.Mockito.*',
      },
    },
    -- contentProvider = { preferred = 'fernflower' },
    extendedClientCapabilities = extendedClientCapabilities,
    sources = {
      organizeImports = {
        starThreshold = 9999,
        staticStarThreshold = 9999,
      },
    },
    codeGeneration = {
      toString = {
        template = '${object.className}{${member.name()}=${member.value}, ${otherMembers}}',
      },
      useBlocks = true,
    },
  },
  flags = {
    allow_incremental_sync = true,
  },
  init_options = {
    bundles = bundles,
  },
  handlers = {
    ['language/status'] = function(_, result)
      vim.api.nvim_echo({ { result.message, 'Function' } }, false, {})
    end,
  },
  on_attach = function(client, buf)
    require 'plugins'
    require 'dapUtils'
    jdtls.setup_dap({ hotcodereplace = 'auto' })
    require 'mapping'.lsp(client.name, buf)
    require('jdtls.dap').setup_dap_main_class_configs()
    local _, _ = pcall(vim.lsp.codelens.refresh)
  end
}

Eclipse.jdt.ls version

1.24.0

Steps to Reproduce

run lua vim.lsp.buf.definition() on third party or build in definitions

Expected Result

open jdt file

Actual Result

show:

Error executing vim.schedule lua callback: BufReadCmd Autocommands for "jdt://*": Vim(lua):E5108: Error executing lua /root/.local/share/nvim/lazy/nvim-jdtls/lua/jdtls.lua:1117: Must have a `jdtls` client to load class file or jdt uri
stack traceback:
    [C]: in function 'assert'
    /root/.local/share/nvim/lazy/nvim-jdtls/lua/jdtls.lua:1117: in function 'open_classfile'
    [string ":lua"]:1: in main chunk
    [C]: in function 'bufload'
    /usr/local/share/nvim/runtime/lua/vim/lsp/util.lua:272: in function 'get_lines'
    /usr/local/share/nvim/runtime/lua/vim/lsp/util.lua:1843: in function 'locations_to_items'
    /usr/local/share/nvim/runtime/lua/vim/lsp/handlers.lua:410: in function 'handler'
    /usr/local/share/nvim/runtime/lua/vim/lsp.lua:1446: in function ''
    vim/_editor.lua: in function <vim/_editor.lua:0>
stack traceback:
    [C]: in function 'bufload'
    /usr/local/share/nvim/runtime/lua/vim/lsp/util.lua:272: in function 'get_lines'
    /usr/local/share/nvim/runtime/lua/vim/lsp/util.lua:1843: in function 'locations_to_items'
    /usr/local/share/nvim/runtime/lua/vim/lsp/handlers.lua:410: in function 'handler'
    /usr/local/share/nvim/runtime/lua/vim/lsp.lua:1446: in function ''
    vim/_editor.lua: in function <vim/_editor.lua:0>
nsoufian commented 1 year ago

@y1rn what is the source of the issue , i have the same ?

y1rn commented 1 year ago

@y1rn what is the source of the issue , i have the same ?

I setup java autocmd back to fileType and it works.

local function ftCMD(type, callback)
  vim.api.nvim_create_autocmd("FileType", {
    pattern = type,
    callback = callback,
  })
end

ftCMD('java', require 'lsp.java'.start)
nsoufian commented 1 year ago

thanks @y1rn just work like charm 👍 , i was trying to figure out this issue for days for me i was using BufEnter autocmd.