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

can not open a class #458

Closed mycf closed 1 year ago

mycf commented 1 year ago

LSP client configuration

local function get_install_path(package_name) return require("mason-registry").get_package(package_name):get_install_path() end

local jdtls = require "jdtls" local root_markers = { "gradlew", "pom.xml" } local root_dir = require("jdtls.setup").find_root(root_markers) local home = os.getenv "HOME" local workspace_folder = home .. "/.local/share/eclipse/" .. vim.fn.fnamemodify(root_dir, ":p:h:t") local config = require("custom.conf").mk_config() config.cmd = { -- "/Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk/Contents/Home/bin/java", -- or '/path/to/java17_or_newer/bin/java' -- "/Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk/Contents/Home/bin/java", "/usr/local/opt/openjdk@17/bin/java", "-Declipse.application=org.eclipse.jdt.ls.core.id1", "-Dosgi.bundles.defaultStartLevel=4", "-Declipse.product=org.eclipse.jdt.ls.core.product", "-Dlog.protocol=true", "-Dlog.level=ALL", "-Xms1g", "--add-modules=ALL-SYSTEM", "--add-opens", "java.base/java.util=ALL-UNNAMED", "--add-opens", "java.base/java.lang=ALL-UNNAMED", "-jar", vim.fn.glob(get_installpath "jdtls" .. "/plugins/org.eclipse.equinox.launcher*.jar"), "-configuration", get_install_path "jdtls" .. "/config_mac", "-data", workspace_folder, }

config.root_dir = require("jdtls.setup").find_root { ".git", "mvnw", "gradlew" } config.settings = { java = { signatureHelp = { enabled = true }, contentProvider = { preferred = "fernflower" }, 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.", }, filteredTypes = { "com.sun.", "io.micrometer.shaded.", "java.awt.", "jdk.", "sun.*", }, }, sources = { organizeImports = { starThreshold = 9999, staticStarThreshold = 9999, }, }, codeGeneration = { toString = { template = "${object.className}{${member.name()}=${member.value}, ${otherMembers}}", }, hashCodeEquals = { useJava7Objects = true, }, useBlocks = true, }, configuration = { runtimes = { { name = "JavaSE-11", path = "/Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk/Contents/Home", }, { name = "JavaSE-1.8", path = "/Library/Java/JavaVirtualMachines/jdk1.8.0_192.jdk/Contents/Home", }, {

      name = "JavaSE-17",
      path = "/usr/local/opt/openjdk@17",
    },
  },
},

}, }

local extendedClientCapabilities = require("jdtls").extendedClientCapabilities extendedClientCapabilities.resolveAdditionalTextEditsSupport = true

local bundles = { vim.fn.glob(get_install_path "java-debug-adapter" .. "/extension/server/com.microsoft.java.debug.plugin-", true), } vim.list_extend(bundles, vim.split(vim.fn.glob(get_install_path "java-test" .. "/extension/server/.jar", true), "\n"))

-- for _, value in pairs(bundles) do -- print(value) -- end bundles = vim.tbl_filter(function(s) return not vim.endswith(s, "com.microsoft.java.test.runner-jar-with-dependencies.jar") end, bundles) or {} config.init_options = { bundles = bundles, extendedClientCapabilities = extendedClientCapabilities, } config.on_attach = function(client, bufnr) jdtls.setup_dap { hotcodereplace = "auto" } jdtls.setup.add_commands() local opts = { silent = true, buffer = bufnr } vim.keymap.set("n", "", jdtls.organize_imports, opts) vim.keymap.set("n", "df", jdtls.test_class, opts) vim.keymap.set("n", "dn", jdtls.test_nearest_method, opts) vim.keymap.set("n", "crv", jdtls.extract_variable, opts) vim.keymap.set("v", "crm", [[lua require('jdtls').extract_method(true)]], opts) vim.keymap.set("n", "crc", jdtls.extract_constant, opts) end -- This starts a new client & server, -- or attaches to an existing client & server depending on the root_dir. require("jdtls").start_or_attach(config)

Eclipse.jdt.ls version

No response

Steps to Reproduce

when I open a class by <c-]> like cursor in System

image

Expected Result

open class right

Actual Result

image
mfussenegger commented 1 year ago

I can't reproduce this and a segfault is most likely an issue with neovim itself and not with this plugin.