【问题标题】:problems when compiling netbeans from source 11.0从源代码 11.0 编译 netbeans 时的问题
【发布时间】:2020-07-17 17:04:19
【问题描述】:

我正在尝试从源代码构建 Netbeans 11.0,但遇到了一些问题。首先,我尝试使用 JDK 13.02 构建 netbeans 11.0,但出现了一些问题,我认为 JDK 版本不兼容,所以我下载了 JDK 11.0.6 版本并发生了同样的错误。于是,我下载了 JDK 8u241 版本,终于编译好了,但是编译几分钟后,下一个有趣的错误,这就是我来这里寻求帮助的原因。

BUILD FAILED
C:\Program Files\Netbeans\nbbuild\build.xml:514: The following error occurred while executing this line:
C:\Program Files\Netbeans\nbbuild\build.xml:509: The following error occurred while executing this line:
C:\Program Files\Netbeans\nbbuild\build.xml:556: The following error occurred while executing this line:
C:\Program Files\Netbeans\nb\updatecenters\build.xml:44: exec returned: 1

Total time: 32 minutes 28 seconds

我还包括了它显示的 xml 档案的代码行。

C:\Program Files\Netbeans\nbbuild\build.xml:514:

513   <target name="build-clusters" depends="init">
514       <run-depend-build clusters-to-build="${nb.clusters.list}"/> 
515   </target>

C:\Program Files\Netbeans\nbbuild\build.xml:509:

506   <macrodef name="run-depend-build">
507      <attribute name="clusters-to-build"/>
508      <sequential>
509         <repeat target="build-one-cluster" name="one.cluster.name" values="@{clusters-to-build}" /> 
510      </sequential>
511   </macrodef>

C:\Program Files\Netbeans\nbbuild\build.xml:556 :

537   <target name="build-one-cluster" unless="${one.cluster.name}-is-built" depends="build-one-cluster-check">
538      <echo message="Building ${one.cluster.name} modules"/>
539      <resolve name="one-cluster-modules" value="${one.cluster.name}"/>
540      <resolve name="one-cluster-dependencies" value="${one.cluster.name}.depends"/>
541      <echo>${one-cluster-modules}</echo>
542      <echo>Dependencies: ${one-cluster-dependencies}</echo>
543      <insert-module-all-targets/> <!-- we are in a subproject, so need to reinsert the targets... XXX <antcall> and thus <repeat> apparently reparses the Ant script from disk! -->
544      <antcall target="build-one-cluster-dependencies" inheritAll="false">
545        <param name="one.cluster.dependencies" value="${one-cluster-dependencies}"/>
546        <param name="one.cluster.name" value="${one.cluster.name}"/>
547        <param name="ext.binaries.downloaded" value="true"/>
548      </antcall>
549      <mkdir dir="${netbeans.dest.dir}"/>
550      <nbmerge failonerror="${stop.when.broken.modules}" 
551               dest="${netbeans.dest.dir}" 
552               topdir="${nb_all}" 
553               fixedmodules="${one-cluster-modules}"
554               builtmodulesproperty="${built.modules.property}" 
555               targetprefix="all-" 
556               mergedependentmodules="false">
557      </nbmerge>
558      <touch file="${netbeans.dest.dir}/${one.cluster.name}.built"/>
559   </target>

C:\Program Files\Netbeans\nb\updatecenters\build.xml:44 :

44   <exec executable="${java.home}/bin/keytool" failonerror="true">
45           <arg value="-exportcert"/>
46           <arg line="-keystore ${netbeans.bundled.ks}"/>
47           <arg line="-alias netbeans-bundled"/>
48           <arg line="-storepass ${netbeans.bundled.ks}"/>
49           <arg line="-file ${netbeans.bundled.cert}"/>
50   </exec>

PS1:我知道二进制版本是可用的,而且容易得多,但我很固执,我想编译源版本LOL

PS2:我对以下环境变量进行了更改:JAVA_HOME、JAVA_PATH、ANT_HOME、PATH。

【问题讨论】:

    标签: java netbeans build ant


    【解决方案1】:

    在使用 Ant 1.10.2 和 OpenJDK 1.8_322 编译 netbeans-12.6-source.zip 源时遇到了同样的构建错误。我决定尝试 Ant 1.10.12(此时最新),并发现通过将我的(Windows 10)%PATH% 上的 ANT_HOME 从旧的 1.10.2 路径切换到新的 1.10.12 路径以某种方式修复了错误。不确定 Ant 1.10.2 和 1.10.12 之间有什么区别,但源代码构建中的某些内容肯定使用了 1.10.2 中不存在的新 Ant 功能。

    【讨论】:

    • 该问题没有显示正在使用的 Ant 版本。但是,the Ant Release Notes 声明 “我们建议使用 1.10.x,除非您需要使用 Java 8 之前的 Java 版本...”。并且该文档进一步警告:“可以在此处找到较旧的 Ant 版本。我们强烈建议不要使用这些版本,而是升级到 Ant 的最新版本”,即 1.10.12,因此这似乎是合理的OP 使用的是错误版本的 Ant,您的回答证实可以使用 Ant 1.10.12 编译 NetBeans。
    【解决方案2】:

    根据所提供的信息很难说明您遇到问题的原因,但我按照 Windows 10 上 NetBeans 11.3 的 Building from source 说明进行操作,一切正常:

    因此,简单地记录我所做的事情可能会更有帮助,您可以解决任何差异:

    • Download and unzip NetBeans 11.3 source from GitHub 转为 D:\Downloads\NetBeans source\netbeans-master
    • Download and unzip Ant 1.10.7 转为 C:\ApacheAnt
    • 我(错误地!)将 ANT_HOME 设置为 C:\ApacheAnt 而不是 C:\ApacheAnt\bin,但这似乎并不重要。
    • JAVA_HOME设置为C:\Java\jdk1.8.0_221,并确保它是PATH上的唯一JDK。
    • 打开一个命令提示符窗口并提交以下内容:
    D:
    
    cd D:\Downloads\NetBeans source\netbeans-master
    
    C:\ApacheAnt\bin\ant build
    

    注意事项:

    • NetBeans 的 Building from source 说明声明“安装 Java 开发工具包的 LTS 版本”,因此实际上您唯一的选择是 JDK 8 或 JDK 11。
    • 构建 NetBeans 会向控制台生成大量输出,因此最好将输出重定向到文件。这会加快速度,如果您需要检查构建,这将很有用。
    • 我没有JAVA_PATH 环境变量。
    • The Ant documentation 声明“我们建议使用 1.10.x,除非您在构建过程中需要使用 Java8 之前的 Java 版本。”,因此请避免使用 Ant 1.9.x。

    如果您仍然遇到问题,请使用以下信息更新您的问题:

    • JAVA_HOMEANT_HOME 的设置。
    • 指向您在构建 NetBeans 时遵循的说明的链接。
    • 指向您用于下载 NetBeans 源代码的页面的链接。
    • 从控制台提交java -version 的输出。

    【讨论】:

    • 我再次尝试使用 Apache 网站上提供的 Netbeans 11.0 LTS 版本进行构建,并再次给出了帖子中提到的相同错误。正如你所说的那样有效,我尝试构建在 Github 上可用的 Netbeans 11.3 版本并且它有效。这让我相信网站上可用的 11.0 版本的构建存在问题。
    • @LucasSanches 由于您选择不发布所要求的额外信息,因此无法进一步帮助您。祝你好运。
    • 我遇到了同样的错误,在上面的同一个 ant 目标/宏上,只有 build.xml 文件中的行号不同。我正在使用 Ant 10.12,并编译解压缩的源存档:netbeans-12.6-source.zip。我认为“build_clusters”在 OpenJDK 1.8_322 上有问题,或者这个参数 ${nb.clusters.list} 应该被替换为一个值:
    • @Darrin [1] 我认为您的意思是 Apache Ant 1.10.12,对吧? [2] 看起来你做的基础是正确的,无论如何你的问题不大,但请注意这个警告:"Set JAVA_HOMEANT_HOME 适当或不定义"。我让它们都未定义并且一切正常,但如果它们存在,请确保它们的值是正确的。 [3] 我刚刚看到这些Building from source 说明,如果它们对您来说也是新的,这可能会有所帮助。
    • @skomisa 我找到了一个解决方案,可以在 [1] 使用 Ant 1.10.2 和 OpenJDK 1.8_322 时修复构建错误。我需要将我的(Windows 10)%PATH% 上的 ANT_HOME 从 1.10.2 切换到 1.10.12,这以某种方式修复了错误。不确定 Ant 1.10.2 和 1.10.12 之间有什么区别,但源代码构建中的某些内容肯定使用了 1.10.2 中不存在的新 Ant 功能。希望这对某人有帮助!一般来说,我什至从不认为轻微的 Ant 或 Maven 版本差异会很重要——但在这种情况下——这种懒惰的假设确实是问题所在。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多