Программный запуск ant: "Невозможно использовать SUN rmic"

Я запускаю 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

Я проверил следующее:

  • Переменные среды JAVA_HOME и PATH установлены правильно.
  • Параметр eclipse "Установленные JRE" по умолчанию - C:\Program Files\Java\jdk1.6.0_37
  • Свойство проекта "java.home" установлено в "C:\Program Files\Java\jdk1.6.0_37" (см. Выше)

Описание задачи 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 он работает нормально.

Что я могу сделать, чтобы обойти эту ошибку?

1 ответ

Начиная с Java 5, rmic больше не требуется. Система RMI в Java 5 и более поздних версиях может работать с использованием динамических прокси, а не статически предварительно скомпилированных заглушек, поэтому вам нужно только rmic если вам нужно поддерживать клиентов на Java 1.4 или более ранней версии.

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