J'ai une question délicate à poser.
Mon programme Java fait ce genre de choses en boucle :
boucle :
-
lire un fichier externe contenant une classe Java compilée dans un tableau d'octets[].
-
créer une nouvelle instance de mon propre classloader.
-
setbytes du fichier lu à cette instance de classloader.
-
à l'aide du classloader créé, créer une nouvelle instance de l'objet de la classe à partir d'un fichier externe.
-
appeler n'importe quelle méthode de l'objet créé.
Et c'est là que le bât blesse.
-
Lorsque j'exécute ce programme en mode débogage, il se comporte comme je m'y attendais : si le fichier externe a changé, le classloader charge la nouvelle version de la classe et l'exécute (si le fichier n'a pas changé, il charge également l'ancienne version, bien entendu).
-
Mais lorsque j'exécute ce programme PAS en mode débogage, il exécute toujours l'ancienne version malgré le fait que le fichier lu a changé.
Peut-être que quelqu'un ayant une connaissance plus approfondie des problèmes de classloading et des comportements de la JVM peut m'expliquer ce comportement.