Définition de JAVA_HOME lors de l'exécution de Ant à partir de Java
Question
La raison est longue et ennuyeuse, mais je dois exécuter un script Ant pour compiler le code Java 1.5 à partir d'une application Java 1.4. Je continue à avoir cette erreur, cependant:
BUILD FAILED
build.xml:16: Unable to find a javac compiler;
com.sun.tools.javac.Main is not on the classpath.
Perhaps JAVA_HOME does not point to the JDK.
It is currently set to "C:\j2sdk1.4.2_16\jre"
Dans mon code, j'ai:
Project p = new Project();
p.setUserProperty("ant.file", buildFile.getAbsolutePath());
p.setProperty("java.home", "C:\Program Files\Java\jdk1.6.0_04");
p.fireBuildStarted();
p.init();
// so on and so forth
mais il l'ignore. J'ai aussi essayé p.setUserProperty (String, String), mais cela ne fait pas l'affaire non plus. Y a-t-il un moyen de le faire sans lancer un processus séparé?
La solution
La tâche javac de votre fichier de construction contient-elle fork = "oui"
? Si ce n'est pas le cas, la propriété java.home
n'a pas d'importance. ant tentera d’appeler la méthode javac Main
dans le même processus java, lequel de votre erreur est un JRE, pas un JDK.
EDIT Essayez de définir la propriété exécutable
de votre tâche javac sur le chemin complet du binaire javac
et d'ajouter compiler = " ; extJavac "
à la tâche.
Autres conseils
Les barres obliques inverses ne doivent-elles pas être doublées?
p.setProperty("java.home", "C:\\Program Files\\Java\\jdk1.6.0_04");
Avez-vous défini correctement les variables d’environnement JAVA_HOME et ANT_HOME? Si vous utilisez le code, cela devrait fonctionner.
Vérifiez également si votre répertoire% JAVA_HOME% \ bin% ANT_HOME% \ bin doit figurer dans la variable d'environnement 'chemin'.
Votre problème semble être lié au fait que% JAVA_HOME% \ bin n'est pas présent dans l'env. chemin variable si.
Une autre méthode consiste à ajouter "tools.jar" à votre chemin d'accès aux classes. Le compilateur javac est contenu dans ce fichier.
java -cp $ JAVA_HOME / lib / tools.jar ...
est disponible dans le fichier tools.jar. Dans eclipse, même si votre JRE HOME pointe sur un jdk, toutes les bibliothèques système pointent sur JDK_HOME \ jre \ lib. Il n'y a pas tools.jar. Vous pouvez ajouter tools.jar en tant que fichier JAR externe. Cela devrait résoudre votre problème