Le site javax.tools.JavaCompiler#getTask() La méthode prend un options
qui permet de définir les options du compilateur. Les options suivantes message décrit une manière simple de les définir afin d'accéder au classpath du programme appelant :
Vous devez configurer l'option standard java pour qu'il connaisse les fichiers fichiers jar - vous utilisez l'argument des options du compilateur pour ce faire.
Par défaut, l'objet du compilateur java ne semble connaître que les emplacements par défaut par défaut pour bootclasspath, extdirs et endorseddirs en ce qui concerne de son classpath.
Vous devez ajouter l'adresse du programme appelant du programme appelant au compilateur java qui est transmise à l'instance du le gestionnaire de fichiers standard, qui va trouvera alors les classes dans les fichiers jar.
Voici comment je le fais dans le compilateur que j'ai écrit
List<String> optionList = new ArrayList<String>();
// set compiler's classpath to be same as the runtime's
optionList.addAll(Arrays.asList("-classpath",System.getProperty("java.class.path")));
// any other options you want
optionList.addAll(Arrays.asList(options));
JavaCompiler.CompilationTask task = compiler.getTask(out,jfm,diagnostics,optionList,null,jfos);
Il ne vous reste plus qu'à définir le bon classpath lors de l'exécution du programme appelant.