vscode-javals
This is a VS Code extension to launch the JavaLS language server.
Prerequisites
- Node.js 18+ and npm
- Java 17+ (
JAVA_HOME or java on PATH)
- Sibling java-ls Maven project (for local/dev server builds)
Expected layout:
<parent>/
vscode-javals/ ← this extension
java-ls/
java-ls/
target/java-ls.jar
Build
Install extension dependencies:
npm ci
Build the language server (from ../java-ls):
mvn -pl java-ls -am package
Produces ../java-ls/java-ls/target/java-ls.jar.
Compile the extension:
npm run compile
For iterative work, use npm run watch instead (TypeScript check + esbuild).
Run
- Open this folder in VS Code / Cursor.
- Press F5 (or Run and Debug → Run Extension).
- In the Extension Development Host, open a Java file — the server starts automatically.
With default javals.serverMode: auto, the extension uses the sibling Maven jar when present, otherwise the bundled server/java-ls.jar.
After changing the server, rebuild it with Maven and run JavaLS: Restart Language Server from the command palette.
Package (VSIX)
# Ensure the server jar exists first (step 2 above)
npm run package
vscode:prepublish runs npm run sync-server, which copies
../java-ls/java-ls/target/java-ls.jar → ./server/java-ls.jar.
Override the source project with:
JAVALS_DEV_PROJECT=../some/other/path npm run sync-server
Settings
| Setting |
Default |
Purpose |
javals.serverMode |
auto |
auto / bundled / dev — which jar to launch |
javals.devProjectPath |
../java-ls |
Sibling Maven project (relative to extension parent) |
javals.javaHome |
(empty) |
Java 17+ home; else JAVA_HOME / PATH |
javals.jvmArgs |
[] |
Extra JVM args after required --add-exports / --add-opens |
javals.trace.server |
off |
LSP trace level |
javals.backend.sourceIndexer |
javac |
javac / ecj — compiler used when indexing sources |
javals.backend.classIndexer |
asm |
asm / turbine — class-file reader for jars / JRT |
javals.backend.compiler |
javac |
javac / ecj — compiler used for analysis |
Commands
- JavaLS: Restart Language Server (
javals.restartServer)
- JavaLS: Show Output Channel (
javals.showOutputChannel)
| |