Bonjour,
Je génère une série de sources java en dynamique (des .java) dans le but de réutiliser ces objets par la suite, au cours de la même exécution. Seul problème il semble que les fichiers sources générés durant l'exécution ne soient pas automatiquement détectés par ma jvm.
Je résume :
- Génération d'un .java définissant une classe "Foo" conforme et dans un repertoire recensé par le classpath
- Recherche de la classe "Foo" pour faire de la réflexivité dessus ou instanciation d'un Foo
Class monFoo = Class.forName( "Foo" );
--> et là j'obtiens un beau classNotFound
A ce que j'ai cru comprendre, la JVM recherche dynamiquement dans son classpath les définitions des classes qu'elle ne connaît pas encore. Au démarrage, elle est parfaitement capable de détecter le .java et le compiler à la volée si nécessaire, est-ce aussi le cas en cours d'exécution ou n'est-elle capable de ne retrouver que des classes compilées (et ne peut forcer la compilation automatique à l'excécution)?
Autre piste j'utilise Eclipse et j'ai pu remarquer que même en relançant une seconde fois l'application, elle ne compile toujours pas mes nouveaux fichiers. Il faut auparavant faire un "refresh" physique du projet ou du répertoire pour qu'il relise et découvre les nouveaux fichiers. Il compile alors sans problème après le refresh, mes classes sont bien trouvées. Le problème peut-il alors venir d'Eclipse qui créerait des caches pour éviter le parcours 'live' des répertoires à chaque fois, et dans ce cas y'a-t-il moyen de le forcer à rafraîchir et reparcourir toute l'arborescence?
Si quelqu'un a une idée pour me permettre de faire ça, je suis preneur!