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

1

Я запускаю 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 он строит в порядке.

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

  • 0
    «Что я могу сделать, чтобы обойти эту ошибку?» - не используйте rmic! Это не требуется для Java 6, RMI может работать превосходно без заглушек, которые генерирует rmic если у вас нет клиентов, работающих под управлением Java 1.4 или более ранней rmic (а затем у вас есть другие проблемы ...).
  • 0
    Спасибо @Ian за подсказку. Я удалил задачи rmic из файла сборки (поддержка Java 1.4 не требуется), и сейчас выполняется компиляция. (Я не могу опубликовать это как ответ из-за отсутствия репутации. Хорошо ...)
Теги:
ant
rmic

1 ответ

0

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню