Charger une classe"urgent "

Signaler
Messages postés
39
Date d'inscription
samedi 26 mai 2007
Statut
Membre
Dernière intervention
31 août 2007
-
Messages postés
39
Date d'inscription
samedi 26 mai 2007
Statut
Membre
Dernière intervention
31 août 2007
-
salut tout le monde ,
je veut faire une modification sur une classe pendant l'execution et la compiler en suit de la recharger sur la jvm ( je dit bien pendant l'execution )  , j'ai utilise la "classloader " mais toujoure j'ai un problem si vous avez une édie ou bien un code source que m'aide donner le  et merci d'avance

17 réponses

Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
37
Salut:

Quel type de problème as tu?
Messages postés
39
Date d'inscription
samedi 26 mai 2007
Statut
Membre
Dernière intervention
31 août 2007

salut , c'est t'un problem de classloader  (la classe pres definie )
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
37
Salut:

Ceci est un bon cours pour introduire les ClassLoaders, dans lequel il développe un programme qui fait le même travail que l'utilitaire MakeFile d'UNIX, je pense que ça va t'aider (I.C.A.) vu qu'il y a au moins la notion de compiler le code source si c'est nécessaire de le faire.

Bonne chance ...
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
37
Salut:

Désolé, j'ai oublié d'indiquer le lien:

http://www.panix.com/~mito/articles/articles/classloader/j-classloader-ltr.pdf




C'est un bon tutorial, si je ne me trompe pas il est écrit par quelqu'un qui travaille chez IBM.
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
37
Salut:

Autre chose à dire, il vaut mieux que tu valides une réponse que lorsque tu trouvera (I.C.A.) une solution à ton problème, sinon pour un sujet validé personne ne viendra pas pour jetter un coup d'oeil .
Messages postés
39
Date d'inscription
samedi 26 mai 2007
Statut
Membre
Dernière intervention
31 août 2007

salut j'ai deja co documment et j'ai essaye de l'utilise l'exemple indique su ce document mais toujour j'ai le méme  probleme
outil: c'est le jbuilder9)
en tout les cas merci de votre aide
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
37
Salut:

Tu peux au moins nous indiquer le type de problème ou de message d'erreur?

Pour le cours que j'ai déja évoqué le plus important est de comprendre les différentes étapes pour créer un classe loader (sous-classe de ClassLoader) et de bien assimuler les rôles des méthodes les plus importantes.

En attendant Bonne chance ...
Messages postés
39
Date d'inscription
samedi 26 mai 2007
Statut
Membre
Dernière intervention
31 août 2007

salut le probleme est que j'ai utilise  la classe apres le chargement le jbuilder m'affiche ces erreurs
java.lang.ClassFormatError: projetserveur/FipaRequestInitiateur (Bad magic number)
 "FipaRequestInitiateur" est le nom de la classe charger
at java.lang.ClassLoader.defineClass0(Native Method)



 at java.lang.ClassLoader.defineClass(ClassLoader.java:502)



 at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)



 at java.net.URLClassLoader.defineClass(URLClassLoader.java:250)



 at java.net.URLClassLoader.access$100(URLClassLoader.java:54)



 at java.net.URLClassLoader$1.run(URLClassLoader.java:193)



 at java.security.AccessController.doPrivileged(Native Method)



 at java.net.URLClassLoader.findClass(URLClassLoader.java:186)



 at java.lang.ClassLoader.loadClass(ClassLoader.java:299)



 at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:265)



 at java.lang.ClassLoader.loadClass(ClassLoader.java:255)



 at java.lang.ClassLoader.findSystemClass(ClassLoader.java:666)

merci de votre aide  vous me donne un grand espoire   
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
37
Salut:

Veux tu charger une classe à partir du réseau?
Messages postés
39
Date d'inscription
samedi 26 mai 2007
Statut
Membre
Dernière intervention
31 août 2007

salut nom c'est pas ce je veut faire des modification sur une classe qui deja existe dans le projet(l'application est en cours d'execution ) en suite de compiler cette classe et de la charger dans le jvm pour que les modification faite ont  pris en consediration dans notre application  
-mon problem est comment charger la classe dans le jvm
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
37
Salut:

D'après le type de l'erreur déclenché



java.lang.ClassFormatError

il parait que les modifications que tu as fait sur la classe concerné ont modifié le format général d'un fichier .class que tu dois le respecter.

Les ClassLoader chargent des classes en les compilant si c'est nécessaires mais si je ne me trompe pas, ils ne permettent pas de modifier le schéma/format d'un fichier .class.




 
Messages postés
39
Date d'inscription
samedi 26 mai 2007
Statut
Membre
Dernière intervention
31 août 2007

salut,
 est ce que vous avez une autre solution pour que les modification sont pris en compt dans l'application
merci d'avance
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
37
Salut:

Veux tu modifier un fichier source ou un fichier .class?

Je ne sais pas quoi te dire. Pour moi, modifier un .class me paraît impossible, ça nécessite une bonne connaissance de la structure de ce type de fichier et voir si c'est possible de le faire.

Peux me dire pour quoi fais tu ça? Peut être qu'on trouve d'autres solutions/propositions plus simplistes.
Messages postés
39
Date d'inscription
samedi 26 mai 2007
Statut
Membre
Dernière intervention
31 août 2007

salut
 je suis en train de realiser un projet de fin d'etude "mise en oeuvre d'un serveur d'interaction en utilisant la methode de delegation " dans le dommain de systeme multi agents
-je besois de modifier des protocoles en cours d'execution du systeme 
et que chaque prtocole est representer par un fichier ""nomdeprotocole.java"" 
donc quand  je veut faire des modifications je doit cree un nouveu fichier .java qui a  le meme nom avec l'encient protocole ""nomprotocole.java""
en suit de le compiler et de le charger dans le jvm  por que les modification sont pris en compt
merci
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
37
Salut:

J'ai fait une petite recherche, et j'ai trouvé quelques articles qui traitent le rechargement dynamique des classes modifiées sans avoir besoin de redémarrer l'application.

http://www.exampledepot.com/egs/java.lang/ReloadClass.html

http://www.javaworld.com/javaworld/javatips/jw-javatip52.html
Un petit extrait de cette URL:
"For those of you who need to deal with loading and unloading classes on
the fly, these new rules makes life a little clearer. Just load classes
that you wish to later reload in your own classloader. When you want to
reload the classes, nuke the classloader and then load the class
through a newly created classloader.

"

Je pense qu'il y a beaucoup d'article de ce genre, fais une recherche comportant ces mots clés: Java reload class

Es tu de l'ENSI?

Bonne chance .
Messages postés
39
Date d'inscription
samedi 26 mai 2007
Statut
Membre
Dernière intervention
31 août 2007

salut merci j'ai essai de lire et d'utilise ces article et merci en coure une fois
Messages postés
39
Date d'inscription
samedi 26 mai 2007
Statut
Membre
Dernière intervention
31 août 2007

salut ,
nourmalement la classe es recharger  et maintenant  je veut instancie le constructeur de la classe recharger  mais je connu pas les paremetres  de ce constructeur comment faire ?
merci d'avance