在 vim/nvim 中调试 java

问题描述 投票:0回答:1

我正在开发一个基于 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

 查看它正在侦听哪个端口。但端口号每次都会改变。此外,虽然查找并输入它确实允许调试器启动,但存在错误。所以我在某处遗漏了一些东西。非常感谢任何有关可行解决方案的指导。

java debugging editor neovim
1个回答
0
投票
好吧,我终于想通了。这就是我所缺少的:

这是我的 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 安装两个扩展:

    coc-java
  • coc-java-调试
一旦我这样做了,它基本上就起作用了。我掩盖了很多小细节,但它们在文档中。如果这对任何人都立即有用,并且您希望在此处了解这些详细信息。在评论中询问他们,我将在下周在这个答案中添加具体步骤。

© www.soinside.com 2019 - 2024. All rights reserved.