Closed winterSteve25 closed 1 year ago
I have tried downloading JDTLS from the AUR and using that instead of the one from Mason. I have tried running it with java 19 and 17. I have also tried reinstalling JDTLS and nvim-jdtls and reconfiguring it multiple times.
The referenced project takes a long time to load, but after that it works fine for me.
Can't reproduce the error. Maybe try deleting the workspace folder and gradle cache and try again. Maybe in an attempt to get it working you closed neovim before it was done loading the project and the workspace folder got corrupted.
Also try running :JdtCompile
after you deleted the workspace folder and started a new neovim instance and wait for it to print out "Compile successful".
The same error was printed when I do :JdtCompile
. If it helps it doesn't seem like its generating a workplace folder, and the on_attach
function is not called. Also, the error does not appear when JAVA_HOME
is set to jdk11 but it the lsp does not attach either.
I have the same issue with apache/kafka I install jdtls with mason.nvim. And this is my jdtls config
local fn = vim.fn
local home = os.getenv("HOME")
local mason_jdtls = home .. "/.local/share/nvim/mason/share/jdtls/"
local root_dir = require("jdtls.setup").find_root({ ".git", "gradlew", "mvnw" })
local workspace_folder = home .. "/.cache/jdtls/" .. fn.fnamemodify(root_dir, ":p:h:t")
require("jdtls").start_or_attach({
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",
fn.glob(mason_jdtls .. "plugins/org.eclipse.equinox.launcher_*.jar"),
"-configuration",
mason_jdtls .. "config",
"-data",
workspace_folder,
},
})
And I get similar error
80% Starting Java Language Server - Compiling initialization script '/home/xun/.local/share/nvim/mason/share/jdtls/config/org.eclips
e.osgi/51/0/.cp/gradle/init/init.gradle'
assertion failed: Marker property value is too long: org.gradle.tooling.BuildActionFailureException: The supplied phased action fail
ed with an exception.
at org.gradle.tooling.internal.consumer.connection.PhasedActionAwareConsumerConnection.run(PhasedActionAwareConsumerConnecti
on.java:58)
at org.gradle.tooling.internal.consumer.connection.ParameterValidatingConsumerConnection.run(ParameterValidatingConsumerConn
ection.java:62)
at org.gradle.tooling.internal.consumer.DefaultPhasedBuildActionExecuter$1.run(DefaultPhasedBuildActionExecuter.java:78)
at org.gradle.tooling.internal.consumer.DefaultPhasedBuildActionExecuter$1.run(DefaultPhasedBuildActionExecuter.java:70)
at org.gradle.tooling.internal.consumer.connection.LazyConsumerActionExecutor.run(LazyConsumerActionExecutor.java:143)
at org.gradle.tooling.internal.consumer.connection.CancellableConsumerActionExecutor.run(CancellableConsumerActionExecutor.j
ava:45)
at org.gradle.tooling.internal.consumer.connection.ProgressLoggingConsumerActionExecutor.run(ProgressLoggingConsumerActionEx
ecutor.java:61)
at org.gradle.tooling.internal.consumer.connection.RethrowingErrorsConsumerActionExecutor.run(RethrowingErrorsConsumerAction
Executor.java:38)
at org.gradle.tooling.internal.consumer.async.DefaultAsyncConsumerActionExecutor$1$1.run(DefaultAsyncConsumerActionExecutor.
java:67)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1589)
at org.gradle.tooling.internal.consumer.BlockingResultHandler.getResult(BlockingResultHandler.java:46)
at org.gradle.tooling.internal.consumer.DefaultPhasedBuildActionExecuter.run(DefaultPhasedBuildActionExecuter.java:63)
at org.gradle.tooling.internal.consumer.DefaultPhasedBuildActionExecuter.run(DefaultPhasedBuildActionExecuter.java:31)
at org.eclipse.buildship.core.internal.workspace.EclipseModelUtils.runPhasedModelQuery(EclipseModelUtils.java:111)
at org.eclipse.buildship.core.internal.workspace.EclipseModelUtils.runTasksAndQueryCompositeModelWithRuntimInfo(EclipseModel
Utils.java:86)
at org.eclipse.buildship.core.internal.workspace.EclipseModelUtils.runTasksAndQueryModels(EclipseModelUtils.java:60)
at org.eclipse.buildship.core.internal.workspace.DefaultModelProvider.lambda$fetchEclipseProjectAndRunSyncTasks$4(DefaultMod
elProvider.java:75)
at org.eclipse.buildship.core.internal.DefaultGradleBuild$GradleConnectionOperation.runInToolingApi(DefaultGradleBuild.java:
331)
at org.eclipse.buildship.core.internal.operation.DefaultToolingApiOperationManager$WorkspaceRunnableAdapter.run(DefaultTooli
ngApiOperationManager.java:58)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2380)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2405)
at org.eclipse.buildship.core.internal.operation.DefaultToolingApiOperationManager.run(DefaultToolingApiOperationManager.jav
a:39)
at org.eclipse.buildship.core.internal.DefaultGradleBuild.withConnection(DefaultGradleBuild.java:124)
at org.eclipse.buildship.core.internal.workspace.DefaultModelProvider.lambda$fetchEclipseProjectAndRunSyncTasks$5(DefaultMod
elProvider.java:75)
at com.google.common.cache.LocalCache$LocalManualCache$1.load(LocalCache.java:4853)
at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3529)
at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2278)
at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2155)
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2045)
at com.google.common.cache.LocalCache.get(LocalCache.java:3951)
at com.google.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:4848)
at org.eclipse.buildship.core.internal.workspace.DefaultModelProvider.getFromCache(DefaultModelProvider.java:98)
at org.eclipse.buildship.core.internal.workspace.DefaultModelProvider.executeOperation(DefaultModelProvider.java:90)
at org.eclipse.buildship.core.internal.workspace.DefaultModelProvider.fetchEclipseProjectAndRunSyncTasks(DefaultModelProvide
r.java:72)
at org.eclipse.buildship.core.internal.DefaultGradleBuild$SynchronizeOperation.runInToolingApi(DefaultGradleBuild.java:228)
at org.eclipse.buildship.core.internal.operation.DefaultToolingApiOperationManager$WorkspaceRunnableAdapter.run(DefaultTooli
ngApiOperationManager.java:58)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2380)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2405)
at org.eclipse.buildship.core.internal.operation.DefaultToolingApiOperationManager.run(DefaultToolingApiOperationManager.jav
a:39)
at org.eclipse.buildship.core.internal.DefaultGradleBuild$SynchronizeOperation.run(DefaultGradleBuild.java:194)
at org.eclipse.buildship.core.internal.DefaultGradleBuild.synchronize(DefaultGradleBuild.java:102)
at org.eclipse.buildship.core.internal.DefaultGradleBuild.synchronize(DefaultGradleBuild.java:88)
at org.eclipse.jdt.ls.core.internal.managers.GradleProjectImporter.startSynchronization(GradleProjectImporter.java:409)
at org.eclipse.jdt.ls.core.internal.managers.GradleProjectImporter.importDir(GradleProjectImporter.java:297)
at org.eclipse.jdt.ls.core.internal.managers.GradleProjectImporter.importToWorkspace(GradleProjectImporter.java:210)
at org.eclipse.jdt.ls.core.internal.managers.ProjectsManager.importProjects(ProjectsManager.java:150)
at org.eclipse.jdt.ls.core.internal.managers.ProjectsManager.initializeProjects(ProjectsManager.java:112)
at org.eclipse.jdt.ls.core.internal.handlers.InitHandler$1.runInWorkspace(InitHandler.java:257)
at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:43)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
Caused by: org.gradle.cache.CacheOpenException: Could not open init generic class cache for initialization script '/home/xun/.local/
share/nvim/mason/share/jdtls/config/org.eclipse.osgi/51/0/.cp/gradle/init/init.gradle' (/home/xun/.gradle/caches/7.4.2/scripts/7s4n1
zerenary6wu67e7f3xej).
at org.gradle.cache.internal.DefaultPersistentDirectoryStore.open(DefaultPersistentDirectoryStore.java:91)
at org.gradle.cache.internal.DefaultPersistentDirectoryStore.open(DefaultPersistentDirectoryStore.java:43)
at org.gradle.cache.internal.DefaultCacheFactory.doOpen(DefaultCacheFactory.java:103)
at org.gradle.cache.internal.DefaultCacheFactory.open(DefaultCacheFactory.java:68)
at org.gradle.cache.internal.DefaultCacheRepository$PersistentCacheBuilder.open(DefaultCacheRepository.java:117)
at org.gradle.groovy.scripts.internal.FileCacheBackedScriptClassCompiler.compile(FileCacheBackedScriptClassCompiler.java:116
)
at org.gradle.groovy.scripts.internal.CrossBuildInMemoryCachingScriptClassCache.getOrCompile(CrossBuildInMemoryCachingScript
ClassCache.java:50)
at org.gradle.groovy.scripts.internal.BuildScopeInMemoryCachingScriptClassCompiler.compile(BuildScopeInMemoryCachingScriptCl
assCompiler.java:50)
at org.gradle.groovy.scripts.DefaultScriptCompilerFactory$ScriptCompilerImpl.compile(DefaultScriptCompilerFactory.java:49)
at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl.apply(DefaultScriptPluginFactory.java:125)
at org.gradle.configuration.BuildOperationScriptPlugin$1.run(BuildOperationScriptPlugin.java:65)
at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:47)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:68)
at org.gradle.configuration.BuildOperationScriptPlugin.lambda$apply$0(BuildOperationScriptPlugin.java:62)
at org.gradle.configuration.internal.DefaultUserCodeApplicationContext.apply(DefaultUserCodeApplicationContext.java:44)
at org.gradle.configuration.BuildOperationScriptPlugin.apply(BuildOperationScriptPlugin.java:62)
at org.gradle.configuration.DefaultInitScriptProcessor.process(DefaultInitScriptProcessor.java:50)
at org.gradle.initialization.InitScriptHandler$1.run(InitScriptHandler.java:56)
at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:47)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:68)
at org.gradle.initialization.InitScriptHandler.executeScripts(InitScriptHandler.java:51)
at org.gradle.initialization.InitScriptHandlingSettingsLoader.findAndLoadSettings(InitScriptH
JAVA version
$ java --version
openjdk 19.0.2 2023-01-17
OpenJDK Runtime Environment (build 19.0.2+7)
OpenJDK 64-Bit Server VM (build 19.0.2+7, mixed mode)
Having a similar issue with a java "hello world" project single file inside a git repo (for root detection).
❯ java --version
openjdk 17.0.5 2022-10-18
OpenJDK Runtime Environment (build 17.0.5+7-void-r2)
OpenJDK 64-Bit Server VM (build 17.0.5+7-void-r2, mixed mode, sharing)
lsp.log
❯ cat /home/bhagwan/.local/state/nvim/lsp.log
[START][2023-04-16 11:19:25] LSP logging initiated
[ERROR][2023-04-16 11:19:25] .../vim/lsp/rpc.lua:734 "rpc" "java" "stderr" "WARNING: Using incubator modules: jdk.incubator.foreign, jdk.incubator.vector\n"
For some odd reason I don't have the command :JdtCompile
defined, when running :JdtWipeDataAndRestart
I get:
Data directory wasn't detected. You must call `start_or_attach` at least once and the cmd must include a
`-data` parameter (or `--data` if using the official `jdtls` wrapper)
after/ftplugin/java.lua
:
if not pcall(require, "jdtls") then
return
end
-- `:help vim.lsp.start_client`
require("jdtls").start_or_attach({
-- https://github.com/eclipse/eclipse.jdt.ls#running-from-the-command-line
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",
"-Xms1g",
"--add-modules=ALL-SYSTEM",
"--add-opens", "java.base/java.util=ALL-UNNAMED",
"--add-opens", "java.base/java.lang=ALL-UNNAMED",
"-jar",
vim.fn.stdpath("data") ..
"/mason/packages/jdtls/plugins/org.eclipse.equinox.launcher_1.6.400.v20210924-0641.jar",
"-configuration",
vim.fn.stdpath("data") .. "/mason/packages/jdtls/plugins/config_linux",
"-data",
vim.fn.expand("$XDG_DATA_HOME/eclipse/") .. vim.fn.fnamemodify(vim.fn.getcwd(), ":p:h:t")
},
root_dir = require("jdtls.setup").find_root({ ".git", "mvnw", "gradlew" }),
})
Also important to note, the -data
workspace folder is never created.
@eeeXun gradle 7.4.1 is not compatible with java 19. See https://docs.gradle.org/current/userguide/compatibility.html
@ibhagwan
For some odd reason I don't have the command :JdtCompile defined, when running
That means the server isn't initialized and the attach logic didn't run yet. If there's no error in the logs maybe you're just not waiting long enough
@mfussenegger, I wait and do get the exit code 13
error, I enabled debug logging using vim.lsp.set_log_level(1)
and this is the result (nothing else, it just quits):
[START][2023-04-16 12:19:44] LSP logging initiated
[INFO][2023-04-16 12:19:44] .../vim/lsp/rpc.lua:662 "Starting RPC client" { args = { "-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", "/home/bhagwan/.local/share/nvim/mason/packages/jdtls/plugins/org.eclipse.equinox.launcher_1.6.400.v20210924-0641.jar", "-configuration", "/home/bhagwan/.local/share/nvim/mason/packages/jdtls/plugins/config_linux", "-data", "/home/bhagwan/.local/share/eclipse/test-java" }, cmd = "java", extra = {}}
[DEBUG][2023-04-16 12:19:44] .../vim/lsp/rpc.lua:284 "rpc.send" { id = 1, jsonrpc = "2.0", method = "initialize", params = { capabilities = { textDocument = { callHierarchy = { dynamicRegistration = false }, codeAction = { codeActionLiteralSupport = { codeActionKind = { valueSet = { "", "quickfix", "refactor", "refactor.extract", "refactor.inline", "refactor.rewrite", "source", "source.organizeImports" } } }, dataSupport = true, dynamicRegistration = false, isPreferredSupport = true, resolveSupport = { properties = { "edit" } } }, completion = { completionItem = { commitCharactersSupport = false, deprecatedSupport = false, documentationFormat = { "markdown", "plaintext" }, preselectSupport = false, snippetSupport = false }, completionItemKind = { valueSet = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 } }, contextSupport = false, dynamicRegistration = false }, declaration = { linkSupport = true }, definition = { linkSupport = true }, documentHighlight = { dynamicRegistration = false }, documentSymbol = { dynamicRegistration = false, hierarchicalDocumentSymbolSupport = true, symbolKind = { valueSet = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 } } }, hover = { contentFormat = { "markdown", "plaintext" }, dynamicRegistration = false }, implementation = { linkSupport = true }, publishDiagnostics = { relatedInformation = true, tagSupport = { valueSet = { 1, 2 } } }, references = { dynamicRegistration = false }, rename = { dynamicRegistration = false, prepareSupport = true }, semanticTokens = { augmentsSyntaxTokens = true, dynamicRegistration = false, formats = { "relative" }, multilineTokenSupport = false, overlappingTokenSupport = true, requests = { full = { delta = true }, range = false }, serverCancelSupport = false, tokenModifiers = { "declaration", "definition", "readonly", "static", "deprecated", "abstract", "async", "modification", "documentation", "defaultLibrary" }, tokenTypes = { "namespace", "type", "class", "enum", "interface", "struct", "typeParameter", "parameter", "variable", "property", "enumMember", "event", "function", "method", "macro", "keyword", "modifier", "comment", "string", "number", "regexp", "operator", "decorator" } }, signatureHelp = { dynamicRegistration = false, signatureInformation = { activeParameterSupport = true, documentationFormat = { "markdown", "plaintext" }, parameterInformation = { labelOffsetSupport = true } } }, synchronization = { didSave = true, dynamicRegistration = false, willSave = true, willSaveWaitUntil = true }, typeDefinition = { linkSupport = true } }, window = { showDocument = { support = true }, showMessage = { messageActionItem = { additionalPropertiesSupport = false } }, workDoneProgress = true }, workspace = { applyEdit = true, configuration = true, didChangeWatchedFiles = { dynamicRegistration = false, relativePatternSupport = true }, semanticTokens = { refreshSupport = true }, symbol = { dynamicRegistration = false, hierarchicalWorkspaceSymbolSupport = true, symbolKind = { valueSet = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 } } }, workspaceEdit = { resourceOperations = { "rename", "create", "delete" } }, workspaceFolders = true } }, clientInfo = { name = "Neovim", version = "0.9.0" }, initializationOptions = { extendedClientCapabilities = { advancedExtractRefactoringSupport = true, advancedOrganizeImportsSupport = true, classFileContentsSupport = true, generateConstructorsPromptSupport = true, generateDelegateMethodsPromptSupport = true, generateToStringPromptSupport = true, hashCodeEqualsPromptSupport = true, inferSelectionSupport = { "extractMethod", "extractVariable", "extractConstant", "extractVariableAllOccurrence" }, moveRefactoringSupport = true, overrideMethodsPromptSupport = true } }, processId = 29054, rootPath = "/home/bhagwan/Sources/test-java", rootUri = "file:///home/bhagwan/Sources/test-java", trace = "off", workspaceFolders = { { name = "/home/bhagwan/Sources/test-java", uri = "file:///home/bhagwan/Sources/test-java" } } }}
[ERROR][2023-04-16 12:19:44] .../vim/lsp/rpc.lua:734 "rpc" "java" "stderr" "WARNING: Using incubator modules: jdk.incubator.vector, jdk.incubator.foreign\n"
[INFO][2023-04-16 12:19:48] .../lua/vim/lsp.lua:1876 "exit_handler" {}
@eeeXun gradle 7.4.1 is not compatible with java 19. See https://docs.gradle.org/current/userguide/compatibility.html
@mfussenegger I still get same error even downgrade java to 17
$ java --version
openjdk 17.0.6 2023-01-17
OpenJDK Runtime Environment (build 17.0.6+10)
OpenJDK 64-Bit Server VM (build 17.0.6+10, mixed mode)
@mfussenegger, I tried running jdtls
manually in the shell and I get this error inside the config_linux
directory (each run generates a <timestamp>.log
file):
!SESSION 2023-04-21 07:40:33.847 -----------------------------------------------
eclipse.buildId=unknown
java.version=17.0.5
java.vendor=Void
BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=en_US
Command-line arguments: -data /home/bhagwan/.local/share/eclipse/test-java
!ENTRY org.eclipse.osgi 4 0 2023-04-21 07:40:34.877
!MESSAGE Application error
!STACK 1
java.lang.IllegalStateException: Unable to acquire application service. Ensure that the org.eclipse.core.runtime bundle is resolved and started (see config.ini).
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:81)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:402)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:659)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:596)
at org.eclipse.equinox.launcher.Main.run(Main.java:1467)
at org.eclipse.equinox.launcher.Main.main(Main.java:1440)
I have similiar issue. But It seems like jdtls doesn't crash, but simply disconnects directly after the connection. JdtShowLogs
shows also lsp messages, if there has been errors in java project on openning the project. Because jdtsl disconnects, if I do change the java file this lsp messages stays.
At the moment I have ended up with this configuration, which kind of works.
require'lspconfig'.jdtls.setup{
cmd = {
'java', -- or '/path/to/java17_or_newer/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',
'-Xmx1g',
'--add-modules=ALL-SYSTEM',
'--add-opens', 'java.base/java.util=ALL-UNNAMED',
'--add-opens', 'java.base/java.lang=ALL-UNNAMED',
'-jar', os.getenv('HOME') .. '/prog/language-servers/eclipse.jdt.ls/org.eclipse.jdt.ls.product/target/repository/plugins/org.eclipse.equinox.launcher_1.6.400.v20210924-0641.jar',
'-configuration', os.getenv('HOME') .. '/prog/language-servers/eclipse.jdt.ls/org.eclipse.jdt.ls.product/target/repository/config_linux',
-- '-configuration', os.getenv('HOME') .. '/.cache/jdtls/config',
'-data', os.getenv('HOME') .. '/.cache/jdtls/workspace' .. vim.fn.fnamemodify(vim.fn.getcwd(), ':p:h:t')
},
capabilities = capabilities,
init_options = {
bundles = {
os.getenv('HOME') .. '/prog/debug-servers/java-debug/com.microsoft.java.debug.plugin/target/com.microsoft.java.debug.plugin-0.45.0.jar'
}
},
on_attach = function(client, bufnr)
require('jdtls').setup_dap({ hotcodereplace = 'auto' })
end,
}
this is my config that disconnects jdtls immediately. If I start debugger I also get error messages that dap.adapters.java is not set. But I assume it's because jdtls disconnects and java adapter will be unregistered.
local config = {
capabilities = capabilities,
autostart = true,
cmd = {
'java', -- or '/path/to/java17_or_newer/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',
'-Xmx1g',
'--add-modules=ALL-SYSTEM',
'--add-opens', 'java.base/java.util=ALL-UNNAMED',
'--add-opens', 'java.base/java.lang=ALL-UNNAMED',
'-jar', os.getenv('HOME') .. '/prog/language-servers/eclipse.jdt.ls/org.eclipse.jdt.ls.product/target/repository/plugins/org.eclipse.equinox.launcher_1.6.400.v20210924-0641.jar',
'-configuration', os.getenv('HOME') .. '/prog/language-servers/eclipse.jdt.ls/org.eclipse.jdt.ls.product/target/repository/config_linux',
-- '-configuration', os.getenv('HOME') .. '/.cache/jdtls/config',
'-data', os.getenv('HOME') .. '/.cache/jdtls/workspace' .. vim.fn.fnamemodify(vim.fn.getcwd(), ':p:h:t')
},
filetypes = { 'java' },
root_dir = require('jdtls.setup').find_root({'.git', 'mvnw', 'gradlew', 'pom.xml'}),
settings = {
java = {
configuration = {
runtimes = {
{
name = "JavaSE-11",
path = "/usr/lib/jvm/java-11-openjdk-amd64/",
},
{
name = "JavaSE-17",
path = "/usr/lib/jvm/java-17-openjdk-amd64/",
},
}
}
}
},
init_options = {
bundles = {
os.getenv('HOME') .. '/prog/debug-servers/java-debug/com.microsoft.java.debug.plugin/target/com.microsoft.java.debug.plugin-0.45.0.jar'
}
},
on_attach = function(client, bufnr)
require('jdtls').setup_dap({ hotcodereplace = 'auto' })
end,
}
require('jdtls').start_or_attach(config)
I have accessed the logs which has been provied by the JdtShowLogs
command. Please let me know I should check other logs.
It seems like this might be some upstream issue? BTW if anybody has any workarounds for this I would love to know :)
@ibhagwan I found a bug in my configuration using this project for reproduce: repro jdtls, it may be useful.
@ibhagwan I found a bug in my configuration using this project for reproduce: repro jdtls, it may be useful.
Ty @GiuseppeMP, mind sharing the bug? what should I be looking at?
Context: I never used java, I'm only trying to use nvim-jdtls
in order to solve an issue with my plugin fzf-lua
:
To those interested, thanks to @GiuseppeMP I was able to fix my setup, the issues was with my config dir, turns out there are two different config_linux
folders within the jdtls setup, to fix I needed to change this:
...
"-configuration",
vim.fn.stdpath("data") .. "/mason/packages/jdtls/plugins/config_linux",
...
To this (note the omission of plugins
folder):
...
"-configuration",
vim.fn.stdpath("data") .. "/mason/packages/jdtls/config_linux",
...
LSP client configuration
Eclipse.jdt.ls version
1.21.0
Steps to Reproduce
Expected Result
JDTLS to launch and start providing language server services
Actual Result
In the console it prints "Client x exits with code 13 and signal 0" and "nil". Then this stacktrace pops up with this error:
Once the I close the error jdtls is still shown as the active LSP but no language server services are provided.