@@ -21,20 +21,33 @@ local function search_jdk_runtimes()
21
21
local sdkman_java_candidates = ' ~/.sdkman/candidates/java/'
22
22
local jdk_versions = { ' 8' , ' 11' , ' 17' , ' 21' , ' 22' , ' 18' }
23
23
for _ , version in ipairs (jdk_versions ) do
24
- local path = vim .fn .glob (sdkman_java_candidates .. version .. ' .*' , true , true )
25
- if # path > 0 then
26
- table.insert (runtimes , { name = ' JDK' .. version , path = path [1 ] })
24
+ local paths = vim .fn .glob (sdkman_java_candidates .. version .. ' .*' , true , true )
25
+ for _ , jdk_path in ipairs (paths ) do
26
+ -- https://github.com/eclipse-jdtls/eclipse.jdt.ls/wiki/Running-the-JAVA-LS-server-from-the-command-line#initialize-request
27
+ -- name is NOT arbitrary, go link above and search 'enum ExecutionEnvironment'
28
+ if version ~= ' 8' then
29
+ table.insert (runtimes , { name = ' JavaSE-' .. version , path = jdk_path })
30
+ else
31
+ table.insert (runtimes , { name = ' JavaSE-1.8' , path = jdk_path })
32
+ end
27
33
end
28
34
end
29
35
30
- local system_default = vim .fn .system ({ ' java-config' , ' -O' })
31
- if vim .v .shell_error == 0 then
32
- table.insert (runtimes , { name = ' System Default' , path = string.gsub (system_default , " %s+$" , ' ' ) })
36
+ if vim .fn .executable (' java-config' ) == 1 then
37
+ -- system default
38
+ local system_default = vim .fn .system ({ ' java-config' , ' -O' })
39
+ if vim .v .shell_error == 0 and system_default ~= nil then
40
+ -- TODO: extract jdk version
41
+ table.insert (runtimes , { name = ' JavaSE-17' , path = string.gsub (system_default , ' %s+$' , ' ' ) })
42
+ end
33
43
end
34
44
35
45
return runtimes
36
46
end
37
47
48
+ -- TODO: setup java-debug & vscode-java-test & nvim-dap
49
+ -- they can install via mason
50
+
38
51
function M .jdtls ()
39
52
local mason_registery = require (' mason-registry' )
40
53
local server = mason_registery .get_package (' jdtls' )
0 commit comments