Java Can';t构建NetBeans/Ant项目

Java Can';t构建NetBeans/Ant项目,java,netbeans,ant,build,Java,Netbeans,Ant,Build,我继承了一个最初用NetBeans编写的项目,它使用Ant进行构建。我是一名Eclipse用户,曾经使用过Ant,但并不完全理解NetBeans使用Ant的具体方式。我知道它使用了一个build impl.xml文件(导入到build.xml),但是我不知道IDE是如何生成/更新该文件的 我对几个类做了一些小改动,并希望构建一个jar。我尝试在Eclipse中从build.xml和build impl.xml运行“clean”和“jar”目标,但出现以下错误: BUILD FAILED C:\D

我继承了一个最初用NetBeans编写的项目,它使用Ant进行构建。我是一名Eclipse用户,曾经使用过Ant,但并不完全理解NetBeans使用Ant的具体方式。我知道它使用了一个
build impl.xml
文件(导入到
build.xml
),但是我不知道IDE是如何生成/更新该文件的

我对几个类做了一些小改动,并希望构建一个jar。我尝试在Eclipse中从
build.xml
build impl.xml
运行
“clean”
“jar”
目标,但出现以下错误:

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

第337行是来自此目标的javac行:

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


非常感谢您对构建此文件的任何帮助。

还有其他错误吗?之后出现了什么消息?是一堆Java编译错误,还是任务本身没有执行

正在定义一个名为
的新宏,该宏将代替原始的
执行。“等一下!”你是说,不是已经有任务了

是的,这看起来像是在重新定义它。我通常认为这是一个“强”或“坏”的事情做< /强> -特别是因为它不采取相同的参数<代码> <代码>。为什么不叫它
什么的

@
符号有点像属性。它们是传递给宏的参数

您具有以下功能:

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

这将调用基本上运行
ORIGINAL
任务的宏来进行编译。我会确保下面显示的所有属性都已定义

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


我在计算机上分配不同版本的Java库时遇到了同样的问题,因为我有不同类型的3d建模和视觉设计软件

通过确认Windows控制面板上的Java和管理员设置,并重置我的计算机,一切正常。

更正:

对过去的回答很抱歉。解决一些关于Gradle构建的问题,发现创建一个新的相对布局是明智的。要对其进行签名,需要通过替换旧布局将其插入MainActivity.xml,如

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


setContentView(R.layout.new_layout)

如果撤消次要更改,生成是否有效?错误消息表明编译有问题,因此与更改有关。您好,是的,还有一些其他错误。这个问题似乎与Java5与Java6不兼容有关。子类中的某些方法在未被重写的情况下被注释为“@Override”。这在为Java 6编译时没有引起问题,但在为Java 5编译时却引起了问题。简短的回答是受欢迎的,但是对于那些试图了解问题背后的原因的用户来说,它不会提供太多的价值。请抽出一些时间解释导致问题的真正问题是什么以及如何解决。多谢各位~