LINUX.ORG.RU

Проблема с ant в Intellij IDEA

 , ,


0

1

В Intellij IDEA при make project возникает ошибка: Error3, 28) java: package org.apache.tools.ant does not exist, а также idea не может найти некоторые символы, находящиеся в классе processing.core. Кстати, сам ant у меня установлен (Apache Ant(TM) version 1.9.6 compiled on July 3 2015). Не подскажете, как это решить?

Если в консоли делаешь

ant -version
, то что выдается? Всякие
ANT_HOME
JAVA_HOME
PATH
установлены?

Ant есть и в Path?

Насколько помню, Idea эти переменные использует при работе довольно активно.

aarexer
()
Ответ на: комментарий от aarexer

ant -version выдает вот это: Apache Ant(TM) version 1.9.6 compiled on July 3 2015

У меня было вот так: PATH=/opt/java/jdk1.8.0_60/bin:/opt/apache/ant/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/sbin:/usr/local/sbin:/sbin::/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl

JAVA_HOME=/opt/java/jdk1.8.0_60

ANT_HOME=/opt/apache/ant

А теперь вот так вот:

PATH=/opt/java/jdk1.8.0_60/bin:/opt/apache/ant/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/sbin:/usr/local/sbin:/sbin::/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/home/krovlia/apache-ant-1.9.6

ANT_HOME=/home/krovlia/apache-ant-1.9.6

Но проблема осталась. Кстати, CLASSPATH пустая. Это ничего?

krovlya
() автор топика
Ответ на: комментарий от krovlya

Погоди-ка, а почему вот так стало?

/home/krovlia/apache-ant-1.9.6

Вручную если ты ант-ом пользуешься, то все норм?Он собирает проект? И как ты ставил ант?

aarexer
()
Ответ на: комментарий от aarexer

Потому,что в папке /opt у меня нет папки /Apache. Я ставил ант,следуя инструкциям отсюда http://ant.apache.org/manual/install.html#sysrequirements . Именно этот проект вручную тоже не собирает,пишет,что не может собрать.

krovlya
() автор топика
Ответ на: комментарий от krovlya

Как могло быть так:

ANT_HOME=/opt/apache/ant
, если у тебя нет апача? Что показывает
which ant

А другие проекты у тебя антом собираются?

aarexer
()
Ответ на: комментарий от aarexer

Да вроде собираются,но там меня нет таких input.

У меня появится ноут сегодня в 18, можно вас тогда поспрашивать?

krovlya
() автор топика
Ответ на: комментарий от aarexer

/usr/bin/ant -показывает which ant; и файл(program) ant там действительно лежит; Нет, ant build возмущается:/home/krovlia/IdeaProjects/HelloAnt/build.xml:102: taskdef class com.intellij.ant.Javac2 cannot be found

krovlya
() автор топика
Ответ на: комментарий от krovlya

Получилось создать build. При попытке запустить вылезает /home/krovlia/IdeaProjects/Energia/build.xml:123: taskdef class com.intellij.ant.Javac2 cannot be found

krovlya
() автор топика
Ответ на: комментарий от krovlya

В интернетах пишут, что нужно создать в build.xml строчку

<property name="idea.home" value="путь-до-идеи"/>
<property name="idea.path" value="путь-до-идеи"/>

Я не понял, home там нужен, или path, стоит задать оба. Если заработает - можно удалить одну из строчек и проверить, будет ли после этого работать.

anonymous
()
Ответ на: комментарий от krovlya

Что-то непонятно. Анамнез бы не помешал.

Как я понял, есть готовый проект. Открытый или секретно-закрытый?

У него есть build.xml для ant-а. Он собирается из консоли, через ant build?

Потом этот build.xml импортируется в идею. Пишет ли какие-то предупреждения?

Потом запускается компиляция. Как именно? Через Build->Make project (Ctrl + F9), или из окна Ant-а?

А то иначе как-то загадочно и неясно, куда копать.

anonymous
()
Ответ на: комментарий от krovlya

Ядреный проект оказался, с кучей сабмодулей. Джедаи так не поступают, а вот авторы этой софтины очень даже.

В общем, там в комплекте идут проектные файлы для эклипса. Быстрее всего будет именно им и открыть; не так удобно, как в идее, зато работает. У меня эклипса нет, так что сам я это не проверил, но наверняка поможет.

Идея не умеет подхватывать зависимости из ant-а, их нужно руками прописывать. Подпроектов там много, поэтому сразу не скажу, что и куда нужно добавлять. Есть эклипсовые .classpath с этой же информацией, но с ними у идеи тоже свои проблемы.

...

Если оставаться в рамках Jetbrains-ов. Что от этого проекта хочется получить? Просто собрать? Тогда можно на ant build и остановиться. Что-то поменять? Тогда скажи, в каком модуле собираешся работать, и что ожидается на выходе.

anonymous
()
Ответ на: комментарий от anonymous

Система там дофига запутанная. Бери эклипс, правда, с ним я тебе не помогу. Если все же хочется Идеи, то можно кое-чего накостылить.

...

Просто открыть проект целиком не получится. Много связей, нативные подпроекты, нестандартные папки для исходников.

Поэтому пойдем другой дорогой.

Ant может собрать все-все модули, и каждый подпроект получит по готовой jar-ке. И мы изнутри IDE можем их подключить, как будто это внешние библиотеки. После этого можно будет менять код в рамках этого подпроекта; если что-то поменялось в соседнем модуле — то надо опять все пересобрать ant-ом, чтобы jar-ы обновились.

...

Итак, первым делом нужно собрать проект ant-ом, чтобы получились все нужные модули-jar-ки.

После этого переходим к IDE.

...

Сперва определяемся, кого менять будем. Например, модуль Arduino PDE (папка Energia/app).

Открываем IDE, идем в меню File-> New -> Project from Existing Sources, указываем корневую папку (/home/git/Energia).

Выбираем вторую опцию, Import project from external model, выбираем Eclipse. На следующем шаге (Select Eclipse projects directory) ничего не меняем, жмем Next. Теперь показываются эклипсовые проекты, которые можно импортировать. Подробностей не будет, но все их одновременно открыть нельзя. Поэтому убираем все галки, оставляем только processing (app), жмем Finish. Идея ругнется, но проект откроет.

Теперь глазами смотрим build.xml в этой папке (Energia/app/build.xml).

    <javac target="1.5" 
	   srcdir="src" 
	   destdir="bin" 
	   excludes="**/tools/format/**" 
	   encoding="UTF-8"
	   includeAntRuntime="false"
	   debug="true"
	   classpath="../core/core.jar; ${env.JAVA_HOME}/lib/tools.jar; lib/ant.jar; lib/ant-launcher.jar; lib/apple.jar; lib/ecj.jar; lib/jna.jar; lib/RXTXcomm.jar" />

Важна строчка

classpath="../core/core.jar; ${env.JAVA_HOME}/lib/tools.jar; lib/ant.jar; lib/ant-launcher.jar; lib/apple.jar; lib/ecj.jar; lib/jna.jar; lib/

Т.е. в classpath нужно добавить core.jar и кучу библиотек из папки app/lib, например, app/lib/ant.jar.

Внимание: файл Energia/core/core.jar должен быть на месте (появился после сборки проекта ant-ом). Если его нет, то нужно перезапустить сборку.

Теперь про эти jar-ки нужно рассказать Идее.

Идем в меню File->Project Structure, жмем пункт Global Libraries (слева второй снизу). Над центральным списком есть зеленый знак «+», жмем его, во всплывшем меню выбираем пункт Java. Указываем на Energia/core/core.jar, жмем OK. В всплывшем окне отмечаем наш единственный модуль, и жмем OK (там и выбора-то особенного нет). Теперь в проекте появилась jar-ка с ядром этой софтины.

Добавляем остальные библиотеки по той же схеме — зеленый «+», идем в папку Energia/app/lib, через Shift выбираем все jar-ки, жмем OK.

Все готово, библиотеки на местах. Можно открыть Energia/app/src/processing/app/Editor.java, в нем все должно выглядеть без ошибок. Никаких красных подчеркиваний. Если что-то подсвечено — стоит перезапустить Идею; если и это не помогло, то заново добавить библиотеки. Единственное, на что осталась ругань — класс AutoFormat, его вправим на следующем шаге.

...

В build.xml есть строка

excludes="**/tools/format/**"

, т.е. папку Energia/app/src/processing/app/tools/format компилировать не надо.

IDEA про это не в курсе, так что будет ругаться на тамошние сорцы. Проще всего эту папку удалить, чтобы не было конфликтов. Я ее перед этим заархивировал, и архив положил на ее место. Т.е. восстановить будет просто, а IDE без претензий, т.к. внутрь архива не лезет.

...

Все, теперь по Ctrl+F9 модуль компилируется. Можно запустить Energia/app/src/processing/app/ino2cpp/Main.java , в результате что-то даже напечатается.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.