Муравей и Окна (поучительная басня)

Сегодня на лекции в колледже произошел пренеприятнейший случай. Объяснял студентам как собирать программы с помощью Ant. Рассказал о структуре файлв build.xml, продемонстрировал сборщик в деле на собственном нетбуке. Пришло время перейти к практике — откомпилировать учебную программку на Java. Пустил по рядам флешку с архивом apache-ant-1.7.1-bin.tar.gz, студиозы ее распаковали куда нужно, ничто не предвещало хни…


Ant настраивается по очень простому принципу вне зависимости от ОС:

1. Архив распаковывается в удобное для пользователя место.
2. Главный скрипт (в случае Windows это ant.bat) помещается в каталог, где операционная система его может «увидеть» (например, C:\Windows или /usr/bin).
3. В верхней части скрипта прописываются переменные JAVA_HOME и ANT_HOME.

Всё это было выполнено, но ant работать в среде Windows категорически отказался. Я поборолся с этим обстоятельством минут 10 и вынужден был взять таймаут. Конец лекции прошел скомкано, пришлось отпускать всех домой пораньше, практическая работа была сорвана.

Придя домой, конечно же, решил разобраться. Выяснилось следующее. Если JDK и Ant установлены в папки с простыми именами (типа C:\JAVA) — проблем никаких. Но JDK по умолчанию устанавливается в C:\Program Files\Java. Вот этот пробел между Program и Files и стал источником беды. Не буду утомлять подробностями и сразу перейту к рецепту-решению.

Выполните первые два пункта вышеприведенной инструкции. Третий пункт в случае Windows будет выглядеть так:

3.1 Откройте помещенный в C:\Windows файл ant.bat в блокноте и в его начало впишите с учетом ваших реальных путей

SET ANT_HOME=C:\Lab\_bin\java\ant
SET JAVA_HOME=C:\Program Files\Java\jdk1.6.0_01
SET JAVACMD=C:\Program Files\Java\jdk1.6.0_01\bin\java.exe


Обратите внимание, что в данном фрагменте кода нет кавычек и это правильно! (дописано после коммента Skriv'ы)

3.2 Найдите и закомментируйте следующие строки:

if "%_JAVACMD%" == "" set _JAVACMD=%JAVA_HOME%\bin\java.exe
if "%_JAVACMD%" == "" set _JAVACMD=java.exe


Всё, теперь «муравей» готов к труду и обороне.

В заключение отмечу, что данный глюк является скорее недоработкой команды Apache, чем очередным зловредным свойством Windows (если, конечно, отвлечься от мысли, что только в очень зловредную голову могла прийти мысль хранить программы в папке с именем «Program Files»).
  • +3
  • 26 января 2010, 19:52
  • yababay

Комментарии (11)

RSS свернуть / развернуть
+
0
бывают и не такие обломы )))
типа порева на проекторе)))))))
avatar

Sergei_T

  • 26 января 2010, 19:54
+
0
Мне кажется, это организовали сами владельцы рекламного места, чтобы повысить «смотрибельность» данного экрана. Теперь водители, проезжая это место, непроизвольно будут пристально вглядываться: а не покажут ли еще чего?
avatar

yababay

  • 26 января 2010, 20:21
+
0
А если переменные в кавычки взять? В винде длинные имена файлов с пробелами без кавычек никогда в сценариях не работали.
avatar

Skriva

  • 26 января 2010, 21:04
+
0
Вот в кавычках-то и была собака зарыта. Там в скрипте уже свои кавычки есть и получаются конструкции типа

""C:\Program Files\Java""


от которых у Windows крышу сносит. Я как истинный линуксоид ставил эти самые кавычки при объявлении переменных окружения и получал сообщения об ошибках. Так что в вышеприведенных фрагментах кода кавычек нет и быть не должно!
avatar

yababay

  • 26 января 2010, 21:26
+
0
Я уж и не помню — может экранировать можно пробелы как в bash?
avatar

Sergei_T

  • 26 января 2010, 21:37
+
0
Хорошая мысль, что-то я об этом даже не подумал. Но честно говоря въезжать в «культуру» программирования в виндовой командной строке не хочется. Да и проблема решена и решение опробовано. Завтра со студентами будем внедрять.
avatar

yababay

  • 26 января 2010, 21:54
+
0
Да и фиг с ним с виндоусом — не пользуюсь, не администрирую и чувствую себя прекрасно)
avatar

Sergei_T

  • 26 января 2010, 22:00
+
0
скоро будет готова статья — дела просто «времени пока сесть за написание нету» в ней буду рассказывать полно — как поставить JDK и прописать в систему автостарт JAVA_HOME… между прочем в slax я тоже убрал кавычки — проблема была аналогичная.
avatar

FREExLOADER

  • 27 января 2010, 08:56
+
0
Закон бутерброда сработал! Спасибо, Учтем!
( подробно!)
avatar

Markony

  • 27 января 2010, 10:14
+
+2
Использую Java для работы и программирования под PDM Teamcenter. Java на своем компе ставлю не по умолчанию а в С:\java
avatar

Engineer

  • 27 февраля 2010, 14:17
+
0
Это тоже выход их положения. Многие SDK для мобильных платформ ставятся именно так (C:\Nokia и т.п.).
avatar

yababay

  • 27 февраля 2010, 14:55

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.