Groovy LSP 无法在 neovim 中正确启动

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

我在让 groovy-language-server 在 neovim 中正常工作时遇到一些问题。

当我在新缓冲区中打开

.groovy
文件时,我可以看到一条消息,指示 LSP 客户端启动失败:
Client 1 quit with exit code 1 and signal 0

好吧,很酷,所以我使用

:LspLog
检查日志,我可以看到此错误:
Error: Unable to access jarfile groovy-language-server-all.jar
。 (另外,如果有人有任何关于如何清除 LSP 日志或仅获取日志文件尾部的提示,那会很方便,我的系统打开这些日志会非常缓慢,因为它至少有 300,000 行长)。 错误信息是:

[ERROR][2024-02-23 18:24:57] .../vim/lsp/rpc.lua:734    "rpc"   "/Users/wmoorby/.sdkman/candidates/java/current/bin/java"   "stderr"    "Error: Unable to access jarfile groovy-language-server-all.jar\n"

我认为我可能会收到此错误,因为我正在使用 SDKMan 管理我的 java 版本,因此我尝试并安装了来自不同供应商的几个不同版本的 java,但总是得到相同的结果。我不相信是因为这个。

接下来我去寻找 Mason 存储所有已安装软件包的位置。我注意到你可以在 Mason 配置中使用

install_root_dir = path.concat { vim.fn.stdpath "data", "mason" }
设置目录,因此为了找到这个位置,我在 neovim 中执行了
:!echo $PATH
。我发现PATH中的位置是
/Users/wmoorby/.local/share/nvim/mason/bin
。我导航到这个目录并浏览了一下以找到 groovy LSP 包。在 groovy-language-server Github page 上的自述文件的帮助下,我发现
.jar
工件位于
groovy-language-server/build/libs
中,并且我尝试使用
:LspLog 运行 
java -jar groovy-language-server-all.jar
 中所述的工件
我认为它有效吗?我执行命令,没有收到任何错误,然后,我的终端保持原样,我认为这意味着服务器正在该终端进程中运行,并且正在等待客户端附加自身。

但是,我还是不知道为什么在neovim中无法执行。我检查了该文件的权限,发现它不可执行,但执行的是 java,而不是工件本身。我还检查了用于运行

java -jar groovy-language-server-all.jar
的 shell 脚本包装器,它也可以工作(我认为这个 shell 脚本是在 neovim 内启动 LSP 时运行的) groovy-language-server shell script wrapper

groovy neovim nvim-lspconfig
1个回答
0
投票

参考server_configurations.md

所以你需要像这样设置lspconfig:

require'lspconfig'.groovyls.setup{
    cmd = { "groovy-language-server" },
    ...
}
© www.soinside.com 2019 - 2024. All rights reserved.