| 12 octobre 2026

Un de nos clients souhaite développer en Java 25 avec le client IBM EWM intégré à Eclipse. Or la dernière version publique de Jazz, la 7.2, n’est compatible qu’avec Eclipse 2025-06 au maximum, qui ne gère pas Java 25. La 7.3, pas encore sortie en version finale (seuls des milestones sont téléchargeables), semble compatible avec les versions d’Eclipse de 2025-09 à 2026-09 — mais l’installation p2 du client EWM ne fonctionne pas nativement sur ces versions. Voici la cause, et la solution que nous avons mise en œuvre.

À savoir : le milestone 7.3 est téléchargeable et testable, mais à ne pas utiliser en production. La démarche ci-dessous est de plus un contournement non supporté par IBM : à valider sur votre propre environnement.

En bref

  • Symptôme : l’installation du client EWM 7.3 sur Eclipse 2025-09 / 2026-03 / 2026-06 s’arrête avec un composant manquant : com.google.javascript.jscomp.
  • Cause : ce bundle OSGi (Google Closure Compiler) n’est plus disponible dans les dépôts Eclipse Orbit, et le JAR de Maven Central n’est pas un bundle OSGi.
  • Solution : transformer le JAR de Maven Central en bundle OSGi, le publier dans un petit dépôt p2 local, puis le fournir à p2.director en plus du dépôt EWM.
  • Résultat : le client s’installe et les bundles passent à l’état RESOLVED / STARTING. Le même dépôt local a servi pour Eclipse 2026-03 et 2026-06.

1. Le contexte : pourquoi une version récente d’Eclipse

Jazz 7.2Jazz 7.3 (milestone)
Eclipse compatiblejusqu’à 2025-062025-09 à 2026-09
Java 25 dans Eclipsenonoui

Pour travailler en Java 25, il faut donc passer à Eclipse 2025-09 ou plus récent, et donc à un client EWM 7.3.

2. Le symptôme

Que ce soit par l’interface (Install New Software) ou en ligne de commande avec p2.director, le résolveur s’arrête avec :

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. La cause

Le module com.ibm.team.rtc.common.scriptengine s’appuie sur le Google Closure Compiler. Historiquement, ce composant était distribué par le projet Eclipse Orbit sous le nom OSGi com.google.javascript.jscomp. Trois éléments bloquent l’installation :

  1. Les dépôts Orbit historiques ne répondent plus : les URL de builds anciens renvoient des erreurs 404.
  2. Le JAR de Maven Central n’est pas un bundle OSGi : com.google.javascript:closure-compiler est une archive Java standard, sans Bundle-SymbolicName ni Bundle-ManifestVersion. Equinox ne peut pas la résoudre.
  3. Le dossier dropins ne suffit pas : y déposer un JAR ne rend pas ses capacités visibles au moteur p2 au moment du calcul des dépendances d’une installation.

4. La stratégie

Sans toucher au dépôt officiel d’IBM, nous avons satisfait le résolveur en trois temps :

  1. récupérer le JAR du Closure Compiler sur Maven Central ;
  2. lui ajouter un manifeste OSGi qui déclare Bundle-SymbolicName: com.google.javascript.jscomp et les packages exportés ;
  3. publier le tout dans un dépôt p2 local (content.jar et artifacts.jar) avec l’outil de publication intégré à Eclipse.

5. La procédure (PowerShell)

Les chemins ci-dessous sont des exemples : adaptez-les à votre poste. Il faut un JDK : la commande jar sert à ajouter le manifeste OSGi au JAR (étape 2).

Étape 1 — Télécharger le JAR

L’artefact utilisé est 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"

Étape 2 — En faire un bundle OSGi

$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

Le manifeste doit être écrit en ASCII, avec une ligne vide finale : c’est une exigence du format.

Étape 3 — Publier les métadonnées p2

On utilise l’application FeaturesAndBundlesPublisher, fournie avec Eclipse, pour générer content.jar et 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

La sortie attendue : Generation completed with success. On vérifie que l’unité installable est bien 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

Étape 4 — Installer le client EWM 7.3

On fournit à p2.director deux dépôts à la fois : l’archive ZIP du dépôt p2 du client EWM (via le protocole jar:file:) et notre dépôt local.

$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. Simulation, sans rien écrire
.\eclipsec.exe -application org.eclipse.equinox.p2.director `
  -repository "$ewmJarUri,$patchUri" `
  -installIU com.ibm.team.rtc.client.feature.feature.group `
  -destination "$PWD" `
  -verifyOnly

# 2. Installation réelle
.\eclipsec.exe -application org.eclipse.equinox.p2.director `
  -repository "$ewmJarUri,$patchUri" `
  -installIU com.ibm.team.rtc.client.feature.feature.group `
  -destination "$PWD"

Résultat :

Installing com.ibm.team.rtc.client.feature.feature.group 7.3.0.202606121734.
Operation completed in 41698 ms.

6. Vérification dans la console OSGi

Après l’installation, nous avons contrôlé l’état des bundles directement dans 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

Le bundle scriptengine, bloqué jusque-là, est désormais résolu : la chaîne de dépendances est complète.

7. Réutiliser le dépôt

Le dossier osgi-patch/repo est un dépôt p2 autonome et réutilisable. Nous l’avons simplement référencé pour provisionner aussi Eclipse 2026-03 et 2026-06, sans rien refaire. Conservez-le avec le ZIP du client EWM : c’est ce qui rend l’installation reproductible sur d’autres postes.

8. Précautions

  • Non supporté : il s’agit d’un contournement. En cas de problème, IBM n’a pas de raison de le reconnaître.
  • Version ancienne : le Closure Compiler v20160315 est celui que l’EWM attendait historiquement ; nous ne l’avons pas remplacé par une version plus récente.
  • Milestone, pas de production : la version 7.3 n’est pas finale. La version finale pourrait régler le problème ; si c’est le cas, ce dépôt local devient inutile.
  • Contrôle fonctionnel : l’état RESOLVED prouve que la dépendance est satisfaite, pas que toutes les fonctions de script du client ont été testées.

Besoin d’aide sur votre environnement Jazz ?

Mise en place de postes de développement EWM, compatibilité Eclipse / Java, packaging de plugins : contactez-nous.

Sources

Restez informé

Nos analyses techniques et actualités IBM Jazz ELM, directement dans votre boîte mail.

Nous n'avons pas pu confirmer votre inscription.
Votre inscription est confirmée.