mfussenegger / nvim-jdtls

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

Jdtls only attaches on first buffer open (Windows) #566

Closed zydras07 closed 9 months ago

zydras07 commented 9 months ago

LSP client configuration

local config = {
    cmd = {
        "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",
        "-Xmx1g",
        "--add-modules=ALL-SYSTEM",
        "--add-opens", "java.base/java.util=ALL-UNNAMED",
        "--add-opens", "java.base/java.lang=ALL-UNNAMED",

        "-jar",
        "C:/Users/igupt/scoop/apps/jdtls/current/plugins/org.eclipse.equinox.launcher_1.6.500.v20230717-2134.jar",
        "-configuration", "C:/Users/igupt/scoop/apps/jdtls/current/config_win",
        "-data", workspace_dir,
    },

    root_dir = require("jdtls.setup").find_root({ "pom.xml", ".git" }),

    settings = {
        java = {
            format = { settings = { url = "C:\\Users\\igupt\\.jdtls\\waterman-format.xml" } }
        }
    },

    init_options = {
        bundles = {
            "C:/users/igupt/.jdtls/java-debug/com.microsoft.java.debug.plugin/target/com.microsoft.java.debug.plugin-0.49.0.jar"
        }
    },

    capabilities = capabilities,  -- nvim-cmp

    on_attach = function(client, bufnr)
        require("jdtls").setup_dap({ hotcodereplace = "auto" })
        require("jdtls.dap").setup_dap_main_class_configs()
    end,
}

Eclipse.jdt.ls version

1.28.0

Steps to Reproduce

Create new Maven project via mvn cmd Open App.java Create a new java file Test.java and open

Expected Result

LSP features in Test.java

Actual Result

Main.java

After :lua require('jdtls').compile('full'): Compile successful

Test.java

After :lua require('jdtls').compile('full'): No LSP client with name 'jdtls' available

mfussenegger commented 9 months ago

Make sure you call require('jdtls').start_or_attach(config) on a java filetype event as explained in the readme