Java
Java language support in Zed is provided by:
- Zed Java: zed-extensions/java
 - Tree-sitter: tree-sitter/tree-sitter-java
 - Language Server: eclipse-jdtls/eclipse.jdt.ls
 
Install OpenJDK
You will need to install a Java runtime (OpenJDK).
- macOS: 
brew install openjdk - Ubuntu: 
sudo add-apt-repository ppa:openjdk-23 && sudo apt-get install openjdk-23 - Windows: 
choco install openjdk - Arch Linux: 
sudo pacman -S jre-openjdk-headless 
Or manually download and install OpenJDK 23.
Extension Install
You can install either by opening {#action zed::Extensions}({#kb zed::Extensions}) and searching for java.
Settings / Initialization Options
The extension will automatically download the language server, see: Manual JDTLS Install below if you'd prefer to manage that yourself.
For available initialization_options please see the Initialize Request section of the Eclipse.jdt.ls Wiki.
You can add these customizations to your Zed Settings by launching {#action zed::OpenSettings}({#kb zed::OpenSettings}) or by using a .zed/setting.json inside your project.
Zed Java Settings
{
  "lsp": {
    "jdtls": {
      "initialization_options": {}
    }
  }
}
Example Configs
JDTLS Binary
By default, zed will look in your PATH for a jdtls binary, if you wish to specify an explicit binary you can do so via settings:
  "lsp": {
    "jdtls": {
      "binary": {
        "path": "/path/to/java/bin/jdtls",
        // "arguments": [],
        // "env": {},
        "ignore_system_version": true
      }
    }
  }
Zed Java Initialization Options
There are also many more options you can pass directly to the language server, for example:
{
  "lsp": {
    "jdtls": {
      "initialization_options": {
        "bundles": [],
        "workspaceFolders": ["file:///home/snjeza/Project"],
        "settings": {
          "java": {
            "home": "/usr/local/jdk-9.0.1",
            "errors": {
              "incompleteClasspath": {
                "severity": "warning"
              }
            },
            "configuration": {
              "updateBuildConfiguration": "interactive",
              "maven": {
                "userSettings": null
              }
            },
            "trace": {
              "server": "verbose"
            },
            "import": {
              "gradle": {
                "enabled": true
              },
              "maven": {
                "enabled": true
              },
              "exclusions": [
                "**/node_modules/**",
                "**/.metadata/**",
                "**/archetype-resources/**",
                "**/META-INF/maven/**",
                "/**/test/**"
              ]
            },
            "jdt": {
              "ls": {
                "lombokSupport": {
                  "enabled": false // Set this to true to enable lombok support
                }
              }
            },
            "referencesCodeLens": {
              "enabled": false
            },
            "signatureHelp": {
              "enabled": false
            },
            "implementationsCodeLens": {
              "enabled": false
            },
            "format": {
              "enabled": true
            },
            "saveActions": {
              "organizeImports": false
            },
            "contentProvider": {
              "preferred": null
            },
            "autobuild": {
              "enabled": false
            },
            "completion": {
              "favoriteStaticMembers": [
                "org.junit.Assert.*",
                "org.junit.Assume.*",
                "org.junit.jupiter.api.Assertions.*",
                "org.junit.jupiter.api.Assumptions.*",
                "org.junit.jupiter.api.DynamicContainer.*",
                "org.junit.jupiter.api.DynamicTest.*"
              ],
              "importOrder": ["java", "javax", "com", "org"]
            }
          }
        }
      }
    }
  }
}
Manual JDTLS Install
If you prefer, you can install JDTLS yourself and the extension can be configured to use that instead.
- macOS: 
brew install jdtls - Arch: 
jdtlsfrom AUR 
Or manually download install:
- JDTLS Milestone Builds (updated every two weeks)
 - JDTLS Snapshot Builds (frequent updates)