我需要从这个 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 吗?
该消息由定义在“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
所以。。。它看起来像:
配置
时生效的环境中设置了_JAVA_OPTIONS
环境变量。java
命令警告您_JAVA_OPTIONS
已生效(出于安全原因!据推测,实际版本字符串作为下一行输出。头 -n 1
)...然后使用警告消息,就好像它是实际版本字符串一样。您可能有一个有效的启动JDK...但是配置
被警告消息弄糊涂了,并认为您没有。
可能的解决方案:
>
只是取消设置_JAVA_OPTIONS
。这些选项看起来与您正在做的事情无关。
如果与生成相关,请在运行配置
时取消设置_JAVA_OPTIONS
。然后再次设置。
如果有一些原因导致取消设置_JAVA_OPTIONS
不起作用,您可以修改上面的“.m4”文件以跳过版本检查。(呃...
您可以在以下位置阅读有关_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 的出现,一切都很好。