Установка 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. хотя переменный путь.

Другие вопросы по тегам