Bonjour,
Cela fait plusieurs jours que je bute sur un problème dans le développement d'un plugin Eclipse. Les caractéristiques de mon environnement :
Eclipse IDE for RCP and RAP Developers
Version: Photon Release (4.8.0)
Build id: 20180619-1200
Mon objectif est le suivant : je souhaite récupéré le projet java sélectionné pour que le plugin y crée un nouveau fichier. J'ai testé des tas de codes sans succès. Celui qui me semble correspondre le mieux à mes besoins est le suivant (j'y ai mis volontairement des traces pour observer ce qui se passe exactement) :
Le résultat de l'exécution, lorsque je sélectionne le dossier "src" du projet Java "TestWizard", est le suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 public IProject getCurrentProject() { IProject project = null; try { IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); if (window != null) { ISelection iselection = window.getSelectionService().getSelection(); IStructuredSelection selection = (IStructuredSelection) iselection; if (selection == null) { System.err.println("La sélection est nulle"); return null; } Object firstElement = selection.getFirstElement(); System.out.println("Voici le premier élément de la sélection : " + firstElement); if (firstElement instanceof IResource) { project = ((IResource) firstElement).getProject(); System.out.println("Le premier élément est une IResource : " + project.getName()); } else if (firstElement instanceof PackageFragmentRoot) { IJavaProject jProject = ((PackageFragmentRoot) firstElement).getJavaProject(); project = jProject.getProject(); System.out.println("Le premier élément est un PackageFragmentRoot : " + project.getName()); } else if (firstElement instanceof IJavaElement) { IJavaProject jProject = ((IJavaElement) firstElement).getJavaProject(); project = jProject.getProject(); System.out.println("Le premier élément est une IJavaElement : " + project.getName()); } else { System.out.println("Aucune conversion possible pour "+firstElement.getClass()); } } } catch (Exception e) { System.err.println("Quelque chose s'est mal passé...."); e.printStackTrace(); } System.out.println("Aucune exception..."); return project; }
Comme on peut le voir, la classe de l'élément est PackageFragmentRoot et devrait rendre vrai le test de la ligne 21. Or ce n'est pas le cas et c'est vraiment très étrange...J'ai lu que ce comportement arrive lorsque les classes concernées (qui sont identiques) sont chargées par des classloader différents...Sans plus de solutions...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Voici le premier élément de la sélection : src [in TestWizard] <default> (...) Aucune conversion possible pour class org.eclipse.jdt.internal.core.PackageFragmentRoot Aucune exception...
J'en suis là ! Je n'ai plus d'idée...Quelqu'un a-t-il déjà résolu ce type de problème ?
Merci d'avance
Partager