| October 12, 2026
One of our clients wants to develop in Java 25 with the IBM EWM client integrated in Eclipse. However, the latest public Jazz release, 7.2, supports Eclipse 2025-06 at most, which does not handle Java 25. Version 7.3, not yet released as a final version (only milestones are downloadable), appears to be compatible with Eclipse releases from 2025-09 to 2026-09 — but the p2 installation of the EWM client does not work out of the box on them. Here is the cause, and the solution we implemented.
Please note: the 7.3 milestone can be downloaded and tested, but it is not for production use. The procedure below is also a workaround that is not supported by IBM: validate it in your own environment.
In short
- Symptom: installing the EWM 7.3 client on Eclipse 2025-09 / 2026-03 / 2026-06 stops on a missing component:
com.google.javascript.jscomp. - Cause: this OSGi bundle (Google Closure Compiler) is no longer available from the Eclipse Orbit repositories, and the Maven Central JAR is not an OSGi bundle.
- Solution: turn the Maven Central JAR into an OSGi bundle, publish it in a small local p2 repository, and give it to
p2.directoralongside the EWM repository. - Result: the client installs and the bundles reach the
RESOLVED/STARTINGstate. The same local repository was reused for Eclipse 2026-03 and 2026-06.
1. Context: why a recent Eclipse
| Jazz 7.2 | Jazz 7.3 (milestone) | |
|---|---|---|
| Compatible Eclipse | up to 2025-06 | 2025-09 to 2026-09 |
| Java 25 in Eclipse | no | yes |
To work in Java 25 you therefore need Eclipse 2025-09 or later, and hence an EWM 7.3 client.
2. The symptom
Whether through the UI (Install New Software) or from the command line with p2.director, the resolver stops with:
Cannot complete the install because one or more required items could not be found.
Software being installed: IBM Engineering Workflow Management Client Feature 7.3.0
(com.ibm.team.rtc.client.feature.feature.group)
Missing requirement: EWM Eclipse Client Script Support (com.ibm.team.rtc.common.scriptengine)
requires 'osgi.bundle; com.google.javascript.jscomp 0.0.0' but it could not be found
3. The cause
The com.ibm.team.rtc.common.scriptengine module relies on the Google Closure Compiler. Historically, this component was distributed by the Eclipse Orbit project under the OSGi name com.google.javascript.jscomp. Three things block the installation:
- The historical Orbit repositories no longer respond: old build URLs return 404 errors.
- The Maven Central JAR is not an OSGi bundle:
com.google.javascript:closure-compileris a plain Java archive, with noBundle-SymbolicNameorBundle-ManifestVersion. Equinox cannot resolve it. - The
dropinsfolder is not enough: placing a JAR there does not expose its capabilities to the p2 engine when it computes the dependencies of an installation.
4. The strategy
Without touching IBM’s official repository, we satisfied the resolver in three steps:
- fetch the Closure Compiler JAR from Maven Central;
- add an OSGi manifest declaring
Bundle-SymbolicName: com.google.javascript.jscompand the exported packages; - publish the result into a local p2 repository (
content.jarandartifacts.jar) with the publisher tool built into Eclipse.
5. The procedure (PowerShell)
The paths below are examples: adapt them to your machine. A JDK is required: the jar command is used to add the OSGi manifest to the JAR (step 2).
Step 1 — Download the JAR
The artifact used is com.google.javascript:closure-compiler:v20160315.
$workDir = "C:\temp\osgi-patch"
New-Item -ItemType Directory -Path $workDir -Force | Out-Null
Set-Location $workDir
$jarUrl = "https://repo1.maven.org/maven2/com/google/javascript/closure-compiler/v20160315/closure-compiler-v20160315.jar"
Invoke-WebRequest -Uri $jarUrl -OutFile "closure-raw.jar"
Step 2 — Make it an OSGi bundle
$lines = @(
"Manifest-Version: 1.0",
"Bundle-ManifestVersion: 2",
"Bundle-Name: Google Closure Compiler",
"Bundle-SymbolicName: com.google.javascript.jscomp",
"Bundle-Version: 20160315.0.0",
"Export-Package: com.google.javascript.jscomp,com.google.javascript.rhino",
"Bundle-RequiredExecutionEnvironment: JavaSE-11",
""
)
New-Item -ItemType Directory -Path "META-INF" -Force | Out-Null
[System.IO.File]::WriteAllLines("$workDir\META-INF\MANIFEST.MF", $lines, [System.Text.Encoding]::ASCII)
$pluginsDir = "$workDir\repo\plugins"
New-Item -ItemType Directory -Path $pluginsDir -Force | Out-Null
Copy-Item "$workDir\closure-raw.jar" "$workDir\temp.jar" -Force
& jar ufm "$workDir\temp.jar" "$workDir\META-INF\MANIFEST.MF"
Move-Item "$workDir\temp.jar" "$pluginsDir\com.google.javascript.jscomp_20160315.0.0.jar" -Force
The manifest must be written in ASCII, with a trailing blank line: this is a requirement of the format.
Step 3 — Publish the p2 metadata
We use the FeaturesAndBundlesPublisher application, shipped with Eclipse, to generate content.jar and artifacts.jar:
cd "C:\Eclipse\eclipse-jee-2025-09-R"
.\eclipsec.exe -application org.eclipse.equinox.p2.publisher.FeaturesAndBundlesPublisher `
-metadataRepository "file:/C:/temp/osgi-patch/repo" `
-artifactRepository "file:/C:/temp/osgi-patch/repo" `
-bundles "C:\temp\osgi-patch\repo\plugins" `
-compress -publishArtifacts
Expected output: Generation completed with success. We then check that the installable unit is visible:
$patchUri = [System.Uri]::new("C:\temp\osgi-patch\repo").AbsoluteUri
.\eclipsec.exe -application org.eclipse.equinox.p2.director -repository "$patchUri" -list
# com.google.javascript.jscomp=20160315.0.0
Step 4 — Install the EWM 7.3 client
We give p2.director two repositories at once: the ZIP of the EWM client p2 repository (through the jar:file: protocol) and our local repository.
$zipPath = "C:\Sources\Jazz\EWM-Client-p2Repo-7.3.0M7.zip"
$ewmJarUri = "jar:$([System.Uri]::new($zipPath).AbsoluteUri)!/"
$patchUri = [System.Uri]::new("C:\temp\osgi-patch\repo").AbsoluteUri
# 1. Dry run, nothing is written
.\eclipsec.exe -application org.eclipse.equinox.p2.director `
-repository "$ewmJarUri,$patchUri" `
-installIU com.ibm.team.rtc.client.feature.feature.group `
-destination "$PWD" `
-verifyOnly
# 2. Actual installation
.\eclipsec.exe -application org.eclipse.equinox.p2.director `
-repository "$ewmJarUri,$patchUri" `
-installIU com.ibm.team.rtc.client.feature.feature.group `
-destination "$PWD"
Result:
Installing com.ibm.team.rtc.client.feature.feature.group 7.3.0.202606121734.
Operation completed in 41698 ms.
6. Checking in the OSGi console
After installation, we checked the bundle states directly in Equinox:
.\eclipse.exe -console -noSplash
osgi> ss com.ibm.team.rtc.common.scriptengine
id State Bundle
1216 STARTING com.ibm.team.rtc.common.scriptengine_3.1.1800.202603301930
osgi> lb com.google.javascript.jscomp
id State Bundle
1221 RESOLVED com.google.javascript.jscomp_20160315.0.0
The scriptengine bundle, blocked until then, is now resolved: the dependency chain is complete.
7. Reusing the repository
The osgi-patch/repo folder is a self-contained, reusable p2 repository. We simply referenced it to provision Eclipse 2026-03 and 2026-06 as well, with no extra work. Keep it together with the EWM client ZIP: that is what makes the installation reproducible on other machines.
8. Caveats
- Unsupported: this is a workaround. If something goes wrong, IBM has no reason to acknowledge it.
- Old version: Closure Compiler
v20160315is the one EWM historically expected; we did not replace it with a newer release. - Milestone, not for production: 7.3 is not final. The final release may fix the problem, in which case this local repository becomes unnecessary.
- Functional check: the
RESOLVEDstate proves the dependency is satisfied, not that every scripting feature of the client has been tested.
Need help with your Jazz environment?
EWM developer workstation setup, Eclipse / Java compatibility, plugin packaging: contact us.