sdoca
sdoca

Reputation: 8042

Can't Build NetBeans/Ant Project

I have inherited a project originally written in NetBeans using Ant to build. I am an Eclipse user and have used Ant but do not completely understand the NetBeans specific way of using Ant. I know it uses a build-impl.xml file (imported into the build.xml), but am at a loss as to how that file is generated/updated by the IDE.

I made some minor changes to a couple of classes and want to build a jar. I tried running the "clean" and "jar" targets in Eclipse from both the build.xml and build-impl.xml but get the following errors:

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.

Line 661 is the j2seproject3 element in this target:

<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>

Line 337 is the javac line from this target:

<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>

I have no idea what these two targets are about and why they're failing. I downloaded NetBeans7 hoping that building it there would succeed, but get the same errors.

Can I safely remove these targets from my build? Do I need to update the project.properties file?

Any help getting this to build is appreciated.

Upvotes: 4

Views: 13272

Answers (3)

corrected:

sorry about the past answer. solving some on the Gradle build on the line found that is advisable to create a new Relative layout. To sign it need to insert it into MainActivity.xml by replacing the old layout like

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

setContentView (R.layout.new_layout);

Upvotes: 0

I had the same issue about assigning different versions of the Java library on my computer, because I have different kinds of software on 3d modelling and visual design.

By affirming Java and administrator settings on Windows Control Panel, and resetting my computer, everything was ok.

Upvotes: -1

David W.
David W.

Reputation: 107090

Any other errors? What message appeared after that? Was it a bunch of Java compile errors, or did the <javac> task itself didn't execute?

The <macrodef> is defining a new macro named <javac> that will execute instead of the original <javac>. "Wait a second!", you're saying, isn't there already a <javac> task?

Yes there is, and this looks like it's redefining it. I would normally consider this a bad thing to do -- especially since it doesn't take the same arguments of <javac>. Why not call it <netbeansc> or something?

The @ signs are sort of like properties. They're parameters that you're passing to the macro.

You have the following:

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

This calls the Macro that pretty much runs the ORIGINAL <javac> task to do the compile. I would make sure that all of the properties show below are defined.

<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/>

Upvotes: 2

Related Questions