J'essaye de compiler et charger une classe à l'exécution, sans connaître le paquet de la classe. Je sais que la classe devrait se conformer à une interface, et l'emplacement de la source, (et donc le nom de la classe). Je suis en train de ce qui suit:Comment fournir une interface à JavaCompiler lors de la compilation dynamique d'un fichier source?
/* Compiling source */
File root = new File("scripts");
File sourceFile = new File(root, "Test.java");
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
compiler.run(null, null, null, sourceFile.getPath());
où le fichier Test.java ressemble
import foo.Itest;
public class Test implements Itest{
...
}
et je reçois une erreur cannot find symbol symbol : class Itest
du compilateur. Comment puis-je fournir le compilateur avec l'interface (qui a déjà été chargé) pour éviter cette erreur?
[EDIT - RÉSOLU]: L'erreur vient du fait de la l'interface était ITest
et la source appelée à une interface Itest
.
Motherfriggin typo! L'interface chargée est 'ITest', pas' Itest'. – brice
Si un modérateur voit ce message et pense qu'il devrait être supprimé, je suis content de ça. – brice
Copie possible de [Comment compiler et charger dynamiquement des classes java externes?] (Https://stackoverflow.com/questions/21544446/how-do-you-dynamically-compile-and-load-external-java-classes) – ldmtwo