Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Feature Request/Proposal: Customize `jdtls` Jar Location

Open
#487 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
35/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Stale
Tech stack
emacs-lisp, java
Domain
tooling

Research direction

Start in lsp-java.el at lsp-java--locate-server-jar and inspect how lsp-java-server-install-dir is used to locate the JAR. Compare the proposed customization approaches against both the lsp-mode layout and the alternative bin/share/java/jdtls layout. Done means JAR detection works for a configurable alternative location and LSP can start.

Written by the indexing model from the issue text.

Description

I've recently had cause to install jdtls myself, rather than using lsp-mode's auto-install faculty. Unfortunately, this can get a little messy. The issue at hand is the function lsp-java--locate-server-jar, and the directory layout of jdtls when it's installed by alternative tools. Specifically, lsp-mode's installation creates a structure like this:

# ~.emacs.d/.cache/lsp/eclipse.jdt.ls/
drwxr-xr-x@ - rdonaldson 19 Sep 16:03 bin                                                                                       drwxr-xr-x@ - rdonaldson 19 Sep 16:03 boot-server                                                                               drwxr-xr-x@ - rdonaldson 19 Sep 16:03 bundles
drwxr-xr-x@ - rdonaldson 19 Sep 16:15 config_linux
drwxr-xr-x@ - rdonaldson 19 Sep 16:03 config_mac
drwxr-xr-x@ - rdonaldson 19 Sep 16:03 config_ss_linux                                                                           drwxr-xr-x@ - rdonaldson 19 Sep 16:03 config_ss_mac                                                                             drwxr-xr-x@ - rdonaldson 19 Sep 16:03 config_ss_win
drwxr-xr-x@ - rdonaldson 19 Sep 16:03 config_win
drwxr-xr-x@ - rdonaldson 19 Sep 16:03 features
drwxr-xr-x@ - rdonaldson 19 Sep 16:03 java-decompiler
drwxr-xr-x@ - rdonaldson 19 Sep 16:03 java-test
drwxr-xr-x@ - rdonaldson 19 Sep 16:03 plugins    

Tools I'm using are creating layouts like so:

├── bin
│  ├── jdtls
│  └── jdtls.py
└── share
   └── java
      └── jdtls
         ├── config_linux
         ├── features
         └── plugins

While this installation is valid, it breaks JAR detection, so LSP won't start -- even though it can find the "server command".

I can see a couple very reasonable solutions here, and I'm happy to implement whichever solution y'all prefer.

  1. Right now, jar location searches in lsp-java-server-install-dir; we could add a new defcustom for lsp-java-server-jar-location and check there first if non-nil.
  2. We could add a new defcustom for the path prefix of the JAR location within the install dir -- something like (defcustom lsp-java-server-jar-subpath "plugins").
  3. We could make a new defcustom for the JAR location function itself, setting the current function as the default implementation.

Thanks so much for the excellent tools, y'all.

Dominant language
Emacs Lisp
Stars
696
Forks
97
PR merge metrics
No merged PRs in 30d

Getting set up

This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from emacs-lsp/lsp-java

All issues in emacs-lsp/lsp-java

Similar issues

More DevTools issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.