Не удается построить проект NetBeans / Ant - PullRequest
4 голосов
/ 13 мая 2011

Я унаследовал проект, изначально написанный в NetBeans, с использованием Ant для сборки. Я являюсь пользователем Eclipse и использую Ant, но не полностью понимаю специфический способ использования Ant в NetBeans. Я знаю, что он использует файл build-impl.xml (импортированный в build.xml), но затрудняюсь понять, как этот файл generated/updated в IDE.

Я внес небольшие изменения в пару классов и хочу построить банку. Я попытался запустить цели "clean" и "jar" в Eclipse из build.xml и build-impl.xml, но получил следующие ошибки:

BUILD FAILED
C:\Devel\Projects\MyProject\nbproject\build-impl.xml:661: The following error occurred while executing this line:
C:\Devel\Projects\MyProject\nbproject\build-impl.xml:337: Compile failed; see the compiler error output for details.

Строка 661 является элементом j2seproject3 в этой цели:

<target depends="init,deps-jar,-pre-pre-compile,-pre-compile, -copy-persistence-xml,-compile-depend" if="have.sources" name="-do-compile">
    <j2seproject3:javac gensrcdir="${build.generated.sources.dir}"/>
    <copy todir="${build.classes.dir}">
        <fileset dir="${src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
    </copy>
</target>

Строка 337 является строкой javac от этой цели:

<target depends="-init-ap-cmdline-properties" name="-init-macrodef-javac-without-processors" unless="ap.supported.internal">
    <macrodef name="javac" uri="http://www.netbeans.org/ns/j2se-project/3">
        <attribute default="${src.dir}" name="srcdir"/>
        <attribute default="${build.classes.dir}" name="destdir"/>
        <attribute default="${javac.classpath}" name="classpath"/>
        <attribute default="${javac.processorpath}" name="processorpath"/>
        <attribute default="${build.generated.sources.dir}/ap-source-output" name="apgeneratedsrcdir"/>
        <attribute default="${includes}" name="includes"/>
        <attribute default="${excludes}" name="excludes"/>
        <attribute default="${javac.debug}" name="debug"/>
        <attribute default="${empty.dir}" name="sourcepath"/>
        <attribute default="${empty.dir}" name="gensrcdir"/>
        <element name="customize" optional="true"/>
        <sequential>
            <property location="${build.dir}/empty" name="empty.dir"/>
            <mkdir dir="${empty.dir}"/>
            <javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" executable="${platform.javac}" fork="yes" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}" tempdir="${java.io.tmpdir}">
                <src>
                    <dirset dir="@{gensrcdir}" erroronmissingdir="false">
                        <include name="*"/>
                    </dirset>
                </src>
                <classpath>
                    <path path="@{classpath}"/>
                </classpath>
                <compilerarg line="${endorsed.classpath.cmd.line.arg}"/>
                <compilerarg line="${javac.compilerargs}"/>
                <customize/>
            </javac>
        </sequential>
    </macrodef>
</target>

Я понятия не имею, о чем эти две цели и почему они терпят неудачу. Я скачал NetBeans7, надеясь, что его создание будет успешным, но получит те же ошибки.

Могу ли я безопасно удалить эти цели из моей сборки? Нужно ли обновлять файл project.properties?

Любая помощь в создании этого объекта приветствуется.

Ответы [ 3 ]

2 голосов
/ 13 мая 2011

Есть еще ошибки?Какое сообщение появилось после этого?Это была куча ошибок компиляции Java, или сама задача <javac> не была выполнена?

<macrodef> определяет новый макрос с именем <javac>, который будет выполняться вместо исходного <javac>.«Подождите секунду!», Вы говорите, не существует ли уже <javac> задача?

Да, есть, и похоже, что она переопределяет ее.Обычно я считаю это плохим поступком - тем более что он не принимает те же аргументы, что и <javac>.Почему бы не назвать это <netbeansc> или как-то еще?

Знаки @ являются своего рода подобными свойствами.Это параметры, которые вы передаете макросу.

У вас есть следующее:

<j2seproject3:javac
    gensrcdir="${build.generated.sources.dir}"/>

Это вызывает макрос, который в значительной степени запускает задачу ORIGINAL <javac>, чтобы выполнить компиляцию,Я хотел бы убедиться, что все свойства, показанные ниже, определены.

<javac
    debug="${javac.debug}"
    deprecation="${javac.deprecation}"
    destdir="${build.classes.dir}"
    encoding="${source.encoding}"
    excludes="${excludes}"
    executable="${platform.javac}"
    fork="yes"
    includeantruntime="false"
    includes="${includes}"
    source="${javac.source}"
    sourcepath="${empty.dir}"
    srcdir="${srcdir}"
    target="${javac.target}"
    tempdir="${java.io.tmpdir}">
    <src>
       <dirset dir="${empty.dir}"
            erroronmissingdir="false">
            <include name="*"/>
       </dirset>
   </src>
   <classpath>
       <path path="${javac.classpath"/>
   </classpath>
   <compilerarg line="${endorsed.classpath.cmd.line.arg}"/>
   <compilerarg line="${javac.compilerargs}"/>
   <customize/>

0 голосов
/ 22 июля 2018

исправлено:

извините за прошлый ответ. Решив некоторые из сборок Gradle по найденной линии, целесообразно создать новый относительный макет. Чтобы подписать его нужно вставить его в MainActivity.xml, заменив старый макет, например

com.android.support: appcompat v7: 28.0.0-alpha1 ';

setContentView (R.layout.new_layout);

0 голосов
/ 16 июля 2018

У меня была одна и та же проблема с назначением разных версий библиотеки Java на моем компьютере, потому что у меня есть разные виды программного обеспечения для 3d моделирования и визуального дизайна.

После подтверждения настроек Java и администратора на панели управления Windows и перезагрузки компьютера все было в порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...