Вопрос

Причина длинная и скучная, но мне нужно запустить скрипт 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), но это тоже не помогает. Есть ли способ сделать это без запуска отдельного процесса?

Это было полезно?

Решение

Есть ли у задачи javac в вашем файле сборки fork="yes"? Если нет, то не имеет значения, какое свойство установлено в java.home; ant попытается вызвать метод javac Main в том же процессе java, который из-за вашей ошибки является JRE, а не JDK.

РЕДАКТИРОВАТЬ Попробуйте задать для свойства executable вашей задачи javac полный путь к двоичному файлу javac и добавить compiler="extJavac" к задаче.

Другие советы

Разве обратная косая черта не должна быть удвоена?

p.setProperty("java.home", "C:\\Program Files\\Java\\jdk1.6.0_04");

Правильно ли установлены переменные окружения JAVA_HOME и ANT_HOME? Если вы настраиваете с помощью кода, он должен работать.

Также проверьте, должен ли каталог% JAVA_HOME% \ bin% ANT_HOME% \ bin находиться в переменной окружения 'path'.

Похоже, ваша проблема в том, что% JAVA_HOME% \ bin отсутствует в envt. хотя путь к переменной.

Еще один способ сделать это - добавить tools.jar в ваш путь к классам. Компилятор javac содержится в этом jar.

java -cp $ JAVA_HOME / lib / tools.jar ...

Опция javac доступна в tools.jar. В eclipse, даже если ваш JRE HOME указывает на jdk, все системные библиотеки указывают на JDK_HOME \ jre \ lib. Там нет tools.jar. Вы можете добавить tools.jar в качестве внешнего файла Jar. Это должно решить вашу проблему

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top