我正在开发一个基于 Neovim 的 Java IDE,它以 SpaceVim 安装为基础。正确配置所有内容需要相当长的一段时间,但我已经快完成了。 JDTLS 语言服务器已配置并正在运行。当我打开 java 文件时,我得到了所有预期的好处,包括实时自动完成和语法检查。
我当前的问题与调试器有关。 SpaceVim 启用了“调试”层,我想使用“vimspector”作为调试插件,以便在~/.SpaceVim.d/init.toml 中进行配置。我已从 Neovim 中运行 :VimspectorInstall vscode-java-debug
,它似乎已正确安装了指定的小工具。我有一个使用Apache Maven 创建的用于测试的 Java 应用程序,如下所示:
mvn archetype:generate -DgroupId=my.test.app \
-DartifactId=hello \
-DarchetypeArtifactId=maven-archetype-quickstart \
-DinteractiveMode=false
在该应用程序目录的根目录中,我有以下 .vimspector.json 文件:
{
"configurations": {
"Java Attach": {
"adapter": "vscode-java",
"filetypes": [ "java" ],
"configuration": {
"request": "attach",
"hostName": "localhost",
"port": "${port}",
"sourcePaths": [
"${workspaceRoot}/src/main/java",
"${workspaceRoot}/src/test/java"
]
}
}
}
}
打开 java 源文件,尝试启动调试器 ([SPC] dc),系统会提示我输入端口号。这是合乎逻辑的,因为我没有在上面的配置文件中指定一个。这就是我被困住的地方。不知何故,根据我的配置,每当加载 java 文件时,nvim“知道”如何与 jdtls 服务器进行通信,以实现语法和格式化的目的。我知道这是有效的,因为如果不是这样,我就无法进行实时语法检查等。但 Vimspector 似乎无法在本地执行相同的操作。我怀疑它与上面的 .vimspector.json 文件有关,这可能不太适合我的安装。假设这是端口问题,我可以使用 netstat -lnt
查看它正在侦听哪个端口。但端口号每次都会改变。此外,虽然查找并输入它确实允许调试器启动,但存在错误。所以我在某处遗漏了一些东西。非常感谢任何有关可行解决方案的指导。
这是我的 Init.toml 文件的样子:
# All SpaceVim option below [option] section
[options]
# set spacevim theme. by default colorscheme layer is not loaded,
# if you want to use more colorscheme, please load the colorscheme
# layer
colorscheme = "gruvbox"
colorscheme_bg = "dark"
# Disable guicolors in basic mode, many terminal do not support 24bit
# true colors
enable_guicolors = true
# Disable statusline separator, if you want to use other value, please
# install nerd fonts
statusline_separator = "arrow"
statusline_iseparator = "arrow"
buffer_index_type = 4
enable_tabline_filetype_icon = true
enable_statusline_mode = false
bootstrap_before = 'myspacevim#before'
bootstrap_after = 'myspacevim#after'
filetree_direction = "left"
# Enable autocomplete layer
[[layers]]
name = 'autocomplete'
auto_completion_return_key_behavior = "complete"
auto_completion_tab_key_behavior = "smart"
[[layers]]
name = 'shell'
default_position = 'top'
default_height = 30
[[layers]]
name = "telescope"
[[layers]]
name = 'git'
[[layers]]
name = 'VersionControl'
[[layers]]
name = "lang#java"
format_on_save = true
java_formatter_jar = '/home/depaan/downloads/google-java-format/core/target/google-java-format-HEAD-SNAPSHOT-all-deps.jar'
[[layers]]
name = 'lsp'
enable_clients = ['jdtls', 'clangd']
[layers.override_client_cmds]
# jdtls = ["jdtls", "-configuration", "/home/depaan/.cache/jdtls/config", "-data", "/home/depaan/.cache/jdtls/workspace", "-D", "CLIENT_PORT=50000"]
jdtls = ["jdtls", "-configuration", "/home/depaan/.cache/jdtls/config", "-data", "/home/depaan/.cache/jdtls/workspace"]
[[layers]]
name = 'debug'
debugger_plugin = "vimspector"
###########################################################
# Custom Plugins
###########################################################
[[custom_plugins]]
repo = "https://github.com/microsoft/java-debug.git"
merged = 0
[[custom_plugins]]
repo = "https://github.com/neoclide/coc.nvim"
merged = 0
此外,我需要为 coc.nvim 安装两个扩展: