我继承了一个最初用 NetBeans 编写的项目,使用 Ant 进行构建。 我是 Eclipse 用户,使用过 Ant,但不完全了解 NetBeans 使用 Ant 的具体方式。 我知道它使用build-impl.xml
文件(导入到build.xml
中),但我不知道 IDE 如何generated/updated
该文件。
我对几个类做了一些小的更改,想建立一个jar。 我尝试从build.xml
和build-impl.xml
运行 Eclipse 中的 "clean"
和"jar"
目标,但收到以下错误:
BUILD FAILED
C:DevelProjectsMyProjectnbprojectbuild-impl.xml:661: The following error occurred while executing this line:
C:DevelProjectsMyProjectnbprojectbuild-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,希望在那里构建它会成功,但得到同样的错误。
我可以安全地从构建中删除这些目标吗? 是否需要更新项目属性文件?
任何帮助构建它都是值得赞赏的。
还有其他错误吗?之后出现了什么消息?是一堆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/>
更正:
对过去的回答感到抱歉。 解决一些关于 Gradle 构建的行发现,建议创建新的相对布局。要对其进行签名,需要将其插入 MainActivity .xml通过替换旧布局,例如
com.android.support: appcompat v7:28.0.0-alpha1';
setContentView (R.layout.new_layout);
我在计算机上分配不同版本的 Java 库时遇到了同样的问题,因为我在 3D 建模和视觉设计方面有不同类型的软件。
通过确认Windows控制面板上的Java和管理员设置,并重置我的计算机,一切都很好。