Je bosse depuis un moment avec Eclipse (3.1), et un problème que je n'avais jamais eu vient d'apparaître : les fonction de refactoring "rename" et "change method signature" ne veulent plus modifier les références vers les objets modifiés quand ils se trouvent dans d'autres projets.
Exemple :
Projet 1
Projet 2
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 package my.business.intr; Interface MyInterface { void setObject(Object obj); }
Projet 3
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 package my.business.impl; Class MyClass implements MyInterface { public void setObject(Object obj) { // ... } }
Je me place sur la définition de la méthode setObject de MyClass, et je fais ALT+MAJ+R (parce que je maîtrise les raccourcis). Eclipse me prévient "'c'est une méthode d'une interface implémentée : voulez-vous refactorer la méthode de l'interface ?". Je réponds oui. Il me demande quel nouveau nom je veux donner et si, oui ou non, je veux mettre à jour les références. Je choisis un nom, je laisse cochée la case "update references" et je clique sur OK. Le résultat est immédiat : le nom de la méthode est bien changé dans l'interface mais pas dans les sous classes ou les appelants.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 package my.gui; Interface MyGui { public static void main(String[] args) { MyClass instance = New MyClass(); instance.setObject(new Object()); } }
Du coup, ça limite beaucoup l'intérêt du refactor...
Ce problème ne survient que dans un seul workspace sur ma machine. J'ai un collègue à qui c'est arrivé sur seulement quelques projets dans un workspace.
Si quelqu'un a déjà subit ça ou sait comment le réparer, qu'il me fasse signe![]()
Partager