Lorsque des plugins Eclipse se marchent dessus …

… ca énerve.

C’est en voulant dérouler le très prometteur blog de Ben Corrie sur le déploiement d’une appli GWT sur SpringSource dm Server que je suis tombé hier sur un bug de mon environnement Eclipse qui m’a bloqué dès la première étape.

En effet, un simple export de plugin échouait lamentablement sur une NullPointerException :

!ENTRY org.eclipse.ant.core 4 1 2008-12-15 22:34:29.359
!MESSAGE BUILD FAILED
!STACK 0
java.lang.NullPointerException
 at java.util.Hashtable.put(Hashtable.java:394)
 at org.apache.tools.ant.PropertyHelper.setUserProperty(PropertyHelper.java:379)
 at org.apache.tools.ant.Project.setUserProperty(Project.java:537)
 at org.eclipse.ant.internal.core.ant.InternalAntRunner.setProperties(InternalAntRunner.java:233)
 at org.eclipse.ant.internal.core.ant.InternalAntRunner.run(InternalAntRunner.java:554)
 at org.eclipse.ant.internal.core.ant.InternalAntRunner.run(InternalAntRunner.java:456)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:597)
 at org.eclipse.ant.core.AntRunner.run(AntRunner.java:378)
 at org.eclipse.pde.internal.core.exports.FeatureExportOperation.runScript(FeatureExportOperation.java:355)
 at org.eclipse.pde.internal.core.exports.FeatureExportOperation.doExport(FeatureExportOperation.java:236)
 at org.eclipse.pde.internal.core.exports.FeatureBasedExportOperation.run(FeatureBasedExportOperation.java:46)
 at org.eclipse.pde.internal.ui.build.FeatureExportJob.run(FeatureExportJob.java:55)
 at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)

( extrait de <workspace>/.metadata/.log )

 

 

Relativement agacé par ce blocage, j’ai entrepris de trouver la cause du problème… Heureusement pour moi, il n’a pas été si compliqué de la trouver.

En quelques mots, j’ai :

  • créé une nouvelle "Eclipse Application" dans "Run Configurations", sans oublier de spécifier qq arguments mémoires qui vont bien : j’ai utilisé -Xms40m -Xmx512m -XX:PermSize=64m -XX:MaxPermSize=256m
  • lancé cette application en mode debug => ce qui forke un nouvel Eclipse
  • spécifié des break points sur org.eclipse.pde.internal.core.exports.FeatureExportOperation inclus dans le jar org.eclipse.pde.core_3.4.0.v20080903-1700.jar
  • et entrepris de comprendre la cause du problème.

( Tout ça bien sûr en ayant tout d’abord étudier un peu le code de cette classe. Je suis feignant : je n’ai pas cherché les sources, j’ai décompilé rapidement le code du jar avec l’excellent décompilateur de Emmanuel : JD-GUI )

La cause de mon problème était la présence d’une clef WEBLOGIC_HOME ayant une valeur null dans les propriétés envoyées à Ant…
En cherchant un peu plus, j’ai trouvé dans les préférences de mon workspace Eclipse dans la rubrique Ant > Runtime > Properties que ce très cher plugin Weblogic pour Eclipse définissait automatiquement une propriété WEBLOGIC_HOME, qu’il renseigne à partir de la configuration Weblogic à définir dans Server > Runtime Environments.
 
Oui mais voila dans mon workspace dédié à SpringSource dm Server, je n’avais pas configuré un tel environnement … Ce qui causait le problème.

Comme quoi, avoir plusieurs workspaces Eclipse n’est pas toujours une bonne idée…
 

Tweet about this on TwitterShare on FacebookGoogle+Share on LinkedIn
Blabla

2 réflexions au sujet de « Lorsque des plugins Eclipse se marchent dessus … »

  1. Merci pour le compliment, Fabien :)A propos du décompilateur JD et des plug-ins pour IDE, je suis à la recherche d'une bonne âme pour développer les plug-ins JD-Eclipse et/ou JD-NetBeans… Je préfère laisser ce développement à un spécialiste et me concentrer à remédier aux trop nombreuses défectuosité<font class="fiche_mot_libelle_mot_definition">s </font>du coeur de mon décompilateur.A bientôt Fabien.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *


*