Установка JAVA_HOME при запуске Ant из Java
Причина длинная и скучная, но мне нужно запустить скрипт Ant для компиляции кода Java 1.5 из приложения Java 1.4. Я продолжаю получать эту ошибку, хотя:
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"
В моем коде у меня есть:
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
но это игнорирует это. Я также попробовал p.setUserProperty(String, String), но это тоже не помогает. Есть ли способ сделать это без запуска отдельного процесса?
5 ответов
Имеет ли задача javac в вашем файле сборки fork="yes"
? Если нет, то не имеет значения, что java.home
свойство установлено в; муравей попытается вызвать джавака Main
метод в том же процессе Java, который из вашей ошибки является JRE, а не JDK.
РЕДАКТИРОВАТЬ Попробуйте установить executable
свойство вашего задания Javac на полный путь к javac
двоичный файл и добавить compiler="extJavac"
к задаче.
Не следует ли удвоить обратную косую черту?
p.setProperty("java.home", "C:\\Program Files\\Java\\jdk1.6.0_04");
Другой способ сделать это - добавить tools.jar в ваш путь к классам. Компилятор Javac содержится в этом банке.
java -cp $ JAVA_HOME / lib / tools.jar...
Опция javac доступна в tools.jar. В eclipse, даже если ваш JRE HOME указывает на jdk, все системные библиотеки указывают на JDK_HOME\jre\lib. Там нет tools.jar. Вы можете добавить tools.jar в качестве внешнего файла Jar. Это должно решить вашу проблему
Правильно ли установлены переменные окружения JAVA_HOME и ANT_HOME? Если вы устанавливаете с помощью кода, он должен работать.
Также проверьте, должен ли ваш каталог%JAVA_HOME%\bin%ANT_HOME%\bin находиться в переменной окружения 'path'.
Похоже, ваша проблема в том, что%JAVA_HOME%\bin отсутствует в envt. хотя переменный путь.