Skip to content

Local Groovy Language Service

The extension ships its own Groovy Language Service and runs it on your machine whenever a Java 21 runtime is available. Completions, hovers, and diagnostics come from a local process: they work offline, they work behind corporate proxies that block WebSockets, and in Local mode your rule text never leaves your machine.

If no usable Java is found, the extension falls back to the hosted service at epmworkbench.com, so Groovy intelligence keeps working either way. On the hosted service, rule text is processed transiently for your session only and is never stored; see the Privacy Policy for the details. This page covers how the service is chosen, and how to set up a local Java runtime even on a locked-down machine where you cannot install software.

The Epm Workbench › Lsp: Provider setting (open Settings and search for “lsp provider”) has three modes:

  • Auto (the default) tries the local service first and falls back to the hosted service if local cannot start.
  • Local uses only the bundled local service. Java 21 is required, and the hosted fallback is disabled: rule text never leaves the machine.
  • Hosted skips Java discovery and connects directly to the hosted service.

The EPM Groovy status bar item shows which one you are on (Local or Connected for hosted). Click it to switch. When the hosted service is in use, open Groovy rule text is sent for transient processing; see the Privacy Policy for exactly what that means.

The local service needs Java 21, not 21 or newer. The bundled server pins the Groovy version Oracle EPM uses, and that Groovy cannot read class files from a newer JDK: a newer runtime would start but fail every validation. The extension therefore rejects any other Java major during discovery, with a message telling you what it found.

A JRE is enough. You do not need the full JDK.

The extension checks, in order:

  1. The Epm Workbench › Lsp: Java Path setting, if set. This is a full path to the java executable itself.
  2. The JAVA_HOME environment variable.
  3. java on your PATH.

If you already have a Java 21 runtime installed, discovery usually just works. The command EPM Workbench: Select Java Runtime opens a picker that validates your choice and writes the setting for you.

On many corporate machines you cannot run an installer, but you can extract a zip. Eclipse Temurin (the successor to AdoptOpenJDK) publishes Java 21 as a plain archive, and that is all the local service needs:

  1. Download the Temurin 21 (LTS) JRE archive for your platform from adoptium.net: the .zip on Windows, the .tar.gz on macOS or Linux. Pick the JRE package, not the JDK; it is a third of the size.

  2. Extract it anywhere you have write access, for example C:\Users\you\java\ or ~/java/. No installer, no admin rights, no system changes.

  3. Run EPM Workbench: Select Java Runtime from the Command Palette. It opens a file browser: navigate into the extracted folder and pick the java executable. The extension checks that the file really is a working Java 21 runtime before saving, so a wrong pick tells you what it found instead of failing later.

    The file to pick, by platform:

    • Windows: bin\java.exe (not javaw.exe), for example C:\Users\you\java\jdk-21.0.9+10-jre\bin\java.exe
    • macOS: Contents/Home/bin/java, for example ~/java/jdk-21.0.9+10-jre/Contents/Home/bin/java
    • Linux: bin/java, for example ~/java/jdk-21.0.9+10-jre/bin/java

    Prefer the Settings UI? Open Settings and search for “java path” to find Epm Workbench › Lsp: Java Path. Its description includes a Browse for the Java executable link that opens the same validated picker and fills the setting for you — or paste the path into the field directly. Every route writes the same value.

  4. Open a .groovy rule. The status bar item switches to Local once the service is up.

Your exact folder name will differ with the current patch release; the shape is always the same.

  • Status bar says Connected instead of Local. Discovery did not find a usable Java 21. Run EPM Workbench: Select Java Runtime to point at one directly, then check EPM Workbench: Show Groovy Language Service Log for what was probed and why it was rejected.
  • You picked a newer Java. A Java 22+ or older runtime is rejected up front with a message naming the version it found; the fix is a Java 21 runtime as above.
  • No Java and no network. With neither a local runtime nor a reachable hosted service, Groovy files still get syntax highlighting, formatting, and %Template and %Script macro intelligence from the extension itself; full completions and diagnostics return when either becomes available.