По умолчанию <javac>
работает внутри Ant.Общим ограничением Java является то, что вы не можете настраивать процесс JVM 'Xms
и Xmx
после запуска этого процесса JVM.Итак, сообщение об ошибке, которое вы видите, является программным обеспечением, отклоняющим вашу попытку нарушить этот принцип (используя бесполезное, недружественное сообщение об ошибке.)
Если, однако, вы задаете атрибут fork="true"
в <javac>
tag you сможет указать новые Xms
и Xms
.Это связано с тем, что fork
указывает Ant запустить новый подпроцесс JVM для запуска javac
.Поскольку процесс JVM является новым, он дает Ant приемлемую возможность указать для него Xms
и Xmx
.
Вы можете попробовать что-то вроде этого:
<project name="project" default="all" basedir="[yourvalue]">
<target name="all">
<javac srcdir="[yourvalue]" destdir="[yourvalue]" fork="true">
<!-- javac requires that -Xmx and -Xms be prefixed with -J -->
<compilerarg line="-J-Xms128m -J-Xmx512m" />
</javac>
</target>
</project>
(Обратите внимание, что я использую compilerarg line=""
вместо compilerarg value=""
. Атрибут line
позволяет указывать несколько разделенных пробелами аргументов. Атрибут value
предназначен для передачи одного аргумента.)
Ant будет ждать завершения разветвленного <javac>
, что происходит после того, как процесс javac
завершит свою работу (т.е. компиляцию).Затем Ant продолжает выполнение сценария сборки внутри своего собственного исходного процесса JVM.Муравей проверит, не удалось или не удалось разветвленный javac
, и предпримет обычные действия, основываясь на этой информации.
Производительность
Обычно это более производительно для не fork javac
, а вместо этого просто настройте соответствующие параметры памяти для начальной общей Ant JVM.Это часто (но не всегда) лучший выбор, потому что запуск отдельной JVM обычно медленнее и требует больше памяти, чем просто javac
для запуска в процессе.
Если вы используете предоставленный Ant ant.bat
или ant.sh
для запуска Ant. Простой способ настройки Ant Xms
и Xmx
состоит в том, чтобы определить переменную окружения ANT_OPTS, содержащую нужные аргументы.Существует множество способов установить переменные среды, но вы можете просто отредактировать ant.bat
:
set ANT_OPTS=-Xms128m -Xmx512m