nvim-java:Neovim的Java扩展插件


"Nvim "是 "NeoVim "的缩写,它是 Vim 文本编辑器的一个高度可扩展的改进版本。Vim(Vi 改进版)是一款使用广泛、功能强大的文本编辑器,以高效和多功能著称。NeoVim 以 Vim 为基础,在保持与 Vim 兼容的同时,引入了更多的功能和改进。

nvim-java是Painless Java in Neovim:只需安装并开始编写 public static void main(String[] args)。

特点:

  • 诊断和自动完成
  • 自动DAP调试配置
  • 运行测试

其他优点:
  • 一切必要的东西都会自动安装
  • 使用nvim-lspconfig进行设置jdtls
  • 使用neoconf可以实时更新服务器设置
  • 自动加载必要的jdtls插件
    • 支持的插件有,
      • lombok
      • java-test
      • java-debug-adapter

Neoconf可用于管理包括 jdtls 在内的 LSP 设置。Neoconf 允许全局配置以及项目副配置。以下是如何设置 Jdtls 设置neoconf.json

{
  "lspconfig": {
   
"jdtls": {
     
"java.configuration.runtimes": [
        {
         
"name": "JavaSE-21",
         
"path": "/opt/jdk-21",
         
"default": true
        }
      ]
    }
  }
}

机制:
Jdtls 是 nvim-java 与之通信的语言服务器。然而,我们并没有在 Jdtls 中拥有我们需要的所有功能。因此,当我们启动 Jdtls 时,我们正在加载 java-test 和 java-debug-adapter 扩展。一旦语言服务器启动,我们就与语言服务器进行通信以执行操作。
例如,要运行当前测试,

  • 请求测试类的 Jdtls
  • 请求 Jdtls 获取类路径、模块路径、java 可执行文件
  • 请求 Jdtls 启动调试会话并将会话的端口发送回来
  • 准备TCP连接来监听测试结果
  • 启动 nvim-dap 并让 nvim-dap 处理用户交互
  • 解析传入的测试结果
  • 执行完成后,打开一个窗口显示测试结果

  ┌────────────┐                         ┌────────────┐
  │            │                         │            │
  │   Neovim   │                         │   VSCode   │
  │            │                         │            │
  └─────▲──────┘                         └──────▲─────┘
        │                                       │
        │                                       │
        │                                       │
        │                                       │
┌───────▼───────┐                ┌──────────────▼──────────────┐
│               │                │                             │
│   nvim-java   │                │   Extension Pack for Java   │
│               │                │                             │
└───────▲───────┘                └──────────────▲──────────────┘
        │                                       │
        │                                       │
        │                                       │
        │                                       │
        │                                       │
        │              ┌───────────┐            │
        │              │           │            │
        └──────────────►   JDTLS   ◄────────────┘
                       │           │
                       └───▲───▲───┘
                           │   │
                           │   │
                           │   │
                           │   │
                           │   │
  ┌───────────────┐        │   │         ┌────────────────────────┐
  │               │        │   │         │                        │
  │   java-test   ◄────────┘   └─────────►   java-debug-adapter   │
  │               │                      │                        │
  └───────────────┘                      └────────────────────────┘


nvim-jdtls是一个遵循“保持简单,愚蠢!”的插件。方法。如果您喜欢自己定制东西,那么请尝试一下 nvim-jdtls。