IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Eclipse Platform Discussion :

Instanciation dynamique d'une classe compilée par JavaBuilder lors de l'exécution d'un autre Builder


Sujet :

Eclipse Platform

  1. #1
    Membre habitué
    Homme Profil pro
    Ingénieur développement Java/Web
    Inscrit en
    Juin 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement Java/Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 61
    Points : 140
    Points
    140
    Par défaut Instanciation dynamique d'une classe compilée par JavaBuilder lors de l'exécution d'un autre Builder
    Bonjour,

    Je travaille sur un plugin Eclipse qui permet de créer des projets ayant deux natures : la nature Java, et une nature spécifique.

    J'ai ajouté un IncrementalProjectBuilder qui :
    1- Détecte les modification faites par l'utilisateur sur un fichier .java.
    2- Fait l'introspection sur la classe modifiée pour récupérer des informations de façon dynamique.

    En principe, mon builder sera lancé après le JavaBuilder de jdt puisque dans le fichier .project le JavaBuilder est cité en premier.

    Mon problème est que lorsque mon Builder instancie la classe modifiée il aura une ancienne version de la classe et il ne prend pas en considération la dernière modification que l'utilisateur a faite. C'est comme si le JavaBuilder n'a pas encore compilé la classe après la modification.

    Je n'ai pas réussi à identifier la source exacte de ce problème, donc je me retourne vers developpez.com .

    Y-a-t-il un moyen pour savoir par code java qu'une classe a été bien compilée par le JavaBuilder après la dernière modification qu'elle a subie?
    Si non, y-a-t-il un moyen pour faire attendre mon Builder jusqu'à ce que le JavaBuilder compile toutes les modifications sur les fichiers .java?

    J'espère que j'ai bien expliqué le problème.
    Merci d'avance.

  2. #2
    Membre expert
    Avatar de Gueritarish
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 800
    Points : 3 919
    Points
    3 919
    Par défaut
    Salut,

    Alors tu as 2 articles qui pourraient être intéressant pour toi: le premier, sur les listeners sur les ressources du workspace et le second sur les builders.
    Sache que tu as un évènement POST_BUILD qui correspondrait donc à ce que tu voudrais intercepter.

    Bonne lecture.
    Voilà, à+
    Gueritarish
    Pas de questions technique par MP, les forums sont là pour ça.

  3. #3
    Membre habitué
    Homme Profil pro
    Ingénieur développement Java/Web
    Inscrit en
    Juin 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement Java/Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 61
    Points : 140
    Points
    140
    Par défaut
    Salut,

    Merci pour ta réponse Gueritarish. J'ai réussi à identifier la cause de mon problème : Le ClassLoader. En fait, le ClassLoader que j'utilise pour l'instanciation dynamique des classes "n'est pas à jour". J'ai pensé à deux solution :

    1- A chaque fois où mon Builder est lancé, je crée un nouveau ClassLoader qui utilise le ClassLoader du projet dans lequel la classe java existe. J'ai testé cette solution et ça marche, mais j'ai de soucis concernant la performance vu qu'un Builder Eclipse doit être le plus léger possible. Qu'en pensez vous?

    2- Personnaliser un ClassLoader qui fait le chargement à la volé. Donc le même ClassLoader sera utilisé lors de l'exécution de mon Builder. Avez-vous une idée concernant la performance dans ce cas?

    Enfin, quelle solution vous préférez?

    Merci,
    Ali

Discussions similaires

  1. C++ builder prb d instanciation dynamique d une class
    Par roindesbois dans le forum C++Builder
    Réponses: 2
    Dernier message: 25/01/2014, 20h58
  2. Instanciation dynamique d'une classe
    Par larnin_ dans le forum Langage
    Réponses: 3
    Dernier message: 23/03/2013, 16h24
  3. Réponses: 9
    Dernier message: 15/02/2013, 23h27
  4. [ClassLoader] Chargement dynamique d'une classe -> problème avec packages !
    Par ymerej dans le forum API standards et tierces
    Réponses: 9
    Dernier message: 31/05/2006, 21h37
  5. [RegEx] Trouver les appels statique et dynamique d'une class
    Par jeff_! dans le forum Langage
    Réponses: 8
    Dernier message: 07/04/2006, 16h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo