Я запускаю Ant программно из класса Java:
File buildFile= new File("buildAppl.xml");
if (!buildFile.exists()) {
return false;
}
Project p = new Project();
p.setUserProperty("ant.file", buildFile.getAbsolutePath());
p.setProperty("java.home", "C:\\Program Files\\Java\\jdk1.6.0_37");
p.addBuildListener(logger);
try {
p.fireBuildStarted();
p.init();
ProjectHelper helper = ProjectHelper.getProjectHelper();
p.addReference("ant.projectHelper", helper);
helper.parse(p, buildFile);
p.executeTarget("build");
p.fireBuildFinished(null);
} catch (BuildException e) {
p.fireBuildFinished(e);
return false;
}
Когда я отлаживаю его с помощью Exclipse, я получаю следующую ошибку:
X:\update\jTag\build\buildAppl.xml: 114: При выполнении этой строки произошла следующая ошибка: X:\update\jTag\project\buildAppl.xml: 107: Невозможно использовать SUN rmic, поскольку она недоступна. Общим решением является установка переменной среды JAVA_HOME
Я проверил следующее:
Описание задачи rmic в файле сборки выглядит примерно так:
<rmic base="${classDirClient}" debug="true" classname="x.y.z.ProcessingServiceRmiImpl">
<classpath>
<fileset refid="classpathClient"/>
</classpath>
</rmic>
<rmic base="${classDirClient}" debug="true" classname="x.y.z.RmiXmlMessengerClient">
<classpath>
<fileset refid="classpathClient"/>
</classpath>
</rmic>
При запуске Ant интерактивно в Eclipse он строит в порядке.
Что я могу сделать, чтобы обойти эту ошибку?
Начиная с Java 5, rmic
больше не требуется. Система RMI в Java 5 и более поздних версиях может работать с использованием динамических прокси, а не статически предварительно скомпилированных заглушек, поэтому вам нужно только rmic
если вам нужно поддерживать клиентов на Java 1.4 или ранее.
rmic
если у вас нет клиентов, работающих под управлением Java 1.4 или более раннейrmic
(а затем у вас есть другие проблемы ...).