Voilà un petit problème qui arrive de temps en temps avec Eclipse et ses classloaders:

Supposons que un plugin A ait déclaré une dépendance vers un plugin B.

Question: comment on fait pour que B ait quand même visibilité sur A?

La, vous allez me dire: c’est un peu tordu quand même… c’est que ton découpage de plugins est mal foutu! Et bien non, ça peut arriver lorsque par exemple on utilise des fichiers de configuration qui sont déclarés dans A, mais qui sont utilisés par B.

Solution:

Il suffit de déclarer ce mécanisme dans les fichiers MANIFEST.MF :

  • dans le plugin partagé qui a besoin d’accéder aux classes externes (B) :
    Eclipse-BuddyPolicy: registered
  • dans le (ou les)  plugin(s) qui utilise(nt) B (A dans notre cas):
    Eclipse-RegisterBuddy: <nom du plugin partagé>

C’est une manière implicite (qui s’appelle du « Buddy Class Loading« ) de déclarer la relation dans l’autre sens.

Articles Similaires