提问者:小点点

如何配置 openJDK11 以便从源代码构建?


我需要从这个 OpenJava 分支 https://gitlab.com/gosjava/11/openjdk/-/tree/master/ 源代码交叉编译 - 对于 aarch64-linux-gnu devkit 目标:为此,我将 java 10.0.2 安装为主机 JDK,然后运行“./configure”

└─$ ./configure    
...
configure: Potential Boot JDK found at /home/katya/java is incorrect JDK version (Picked up _JAVA_OPTIONS: -Dawt.useSystemAAFontSettings=on -Dswing.aatext=true); ignoring
configure: (Your Boot JDK version must be one of: 10 11)
checking for javac... /home/katya/java/bin/javac
checking for java... /home/katya/java/bin/java
configure: Found potential Boot JDK using java(c) in PATH
configure: Potential Boot JDK found at /home/katya/java is incorrect JDK version (Picked up _JAVA_OPTIONS: -Dawt.useSystemAAFontSettings=on -Dswing.aatext=true); ignoring
configure: (Your Boot JDK version must be one of: 10 11)
configure: Could not find a valid Boot JDK. You might be able to fix this by running 'sudo apt-get install openjdk-8-jdk'.
configure: This might be fixed by explicitly setting --with-boot-jdk
configure: error: Cannot continue
configure exiting with result code 1

完整日志在这里 https://gist.github.com/iva-nova-e-katerina/3061b865beb48dc25594bc360508d6a3 你能告诉我为什么配置说我使用了错误的 JDK 吗?


共3个答案

匿名用户

该消息由定义在“jdk11u/make/autoconf/boot-jdk.m4”中的BOOTJDK_DO_CHECK autoconf 宏生成。如果您查看该文件,您将看到以下内容:

      BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $HEAD -n 1`

      # Extra M4 quote needed to protect [] in grep expression.
      [FOUND_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION \
          | $EGREP "\"(${DEFAULT_ACCEPTABLE_BOOT_VERSIONS// /|})([\.+-].*)?\""`]
      if test "x$FOUND_CORRECT_VERSION" = x; then
        AC_MSG_NOTICE([Potential Boot JDK found at $BOOT_JDK is incorrect
                       JDK version ($BOOT_JDK_VERSION); ignoring])
        AC_MSG_NOTICE([(Your Boot JDK version must be one of:
                       $DEFAULT_ACCEPTABLE_BOOT_VERSIONS)])
        BOOT_JDK_FOUND=no

(为了便于阅读,我添加了几个换行符...

如果将其与实际错误消息进行比较:

configure: Potential Boot JDK found at /home/katya/java is incorrect JDK version 
(Picked up _JAVA_OPTIONS: -Dawt.useSystemAAFontSettings=on -Dswing.aatext=true); 
ignoring

所以。。。它看起来像:

  1. 您已(或某些内容)在运行配置时生效的环境中设置了_JAVA_OPTIONS环境变量。
  2. java 命令警告您_JAVA_OPTIONS已生效(出于安全原因!据推测,实际版本字符串作为下一行输出。
  3. 宏只捕获第一行(头 -n 1)...然后使用警告消息,就好像它是实际版本字符串一样。
  4. 此虚假版本会导致引导 Java 版本检查日志c 失败。

您可能有一个有效的启动JDK...但是配置被警告消息弄糊涂了,并认为您没有。

可能的解决方案:

>

  • 只是取消设置_JAVA_OPTIONS。这些选项看起来与您正在做的事情无关。

    如果与生成相关,请在运行配置时取消设置_JAVA_OPTIONS。然后再次设置。

    如果有一些原因导致取消设置_JAVA_OPTIONS不起作用,您可以修改上面的“.m4”文件以跳过版本检查。(呃...

    您可以在以下位置阅读有关_JAVA_OPTIONS这种不需要的(尽管实际上是必要的)行为的更多信息:

    • 禁止显示“已拾取_JAVA_OPTIONS”消息

    (简短的回答是“你不能”...除了取消设置环境变量。

  • 匿名用户

    安装 OpenJDK 二进制文件,比如说 /opt/jdk-bin 然后,

    ./configure --with-boot-jdk=/opt/jdk

    就是这样!

    匿名用户

    好吧,我正在通过检查我的想法来构建 Linux 系统。所以这与感情无关。这是关于检查和重新检查它们。这是唯一的学习方法。无论如何,构建OpenJDK是不平凡的,需要一些工作。所以

    build/.configure-support/generation-configure.sh ...您已经设置了JAVA_OPTIONS或JAVA_TOOL_OPTIONS。这可能会弄乱构建

    与凯瑟琳的问题无关。

    配置:这可以通过显式设置 --with-boot-jdk 来解决

    发生在我身上,所以我找到了上面的解决方案。它确实解决了问题,并且构建通过了。唉,由于 Linux 有其自己的神秘方式,我重新检查并令人惊讶地配置的这个 mornging 顺利完成,但构建失败,帐户警告被视为错误。此问题由

    vi build/linux-x86_64-server-release/spec.gmk

    并删除了那里的 -Werror 的出现,一切都很好。