簡體   English   中英

如何配置 openJDK11 以從源代碼構建?

[英]How to configure openJDK11 for build from sources?

我需要從源代碼交叉編譯這個 OpenJava fork https://gitlab.com/gosjava/11/openjdk/-/tree/master/ - 對於 aarch64-linux-gnu devkit 目標:為此我安裝了 java 10.0。主機 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

所以......它看起來像:

  1. 您已經(或某些東西)在運行configure時有效的環境中設置了_JAVA_OPTIONS環境變量。
  2. java命令警告您_JAVA_OPTIONS有效(出於安全原因。)。 大概是真正的版本字符串得到 output 作為下一行
  3. 該宏僅捕獲第一行( head -n 1 )...然后使用警告消息,就好像它是真正的版本字符串一樣。
  4. 此偽造版本導致 Boot Java 版本檢查邏輯失敗。

您可能有一個有效的 Boot JDK……但是configure被警告消息弄糊塗了,並認為您沒有。

可能的解決方案:

  • 只需取消設置_JAVA_OPTIONS 這些選項看起來與您正在做的事情無關。

  • 如果與構建相關,請在運行configure時取消設置_JAVA_OPTIONS 然后重新設置。

  • 如果由於某些原因_JAVA_OPTIONS不起作用,您可以修改上述“.m4”文件以跳過版本檢查。 (呃……)


您可以閱讀更多關於_JAVA_OPTIONS的這種不需要的(盡管實際上是必要的)行為:

(簡短的回答是“你不能”......除了取消設置環境變量。)

安裝 OpenJDK 二進制文件,例如 /opt/jdk-bin 然后,

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

就是這樣

好吧,我正在通過檢查我的想法來構建 Linux 系統。 所以這與感情無關。 這是關於檢查和重新檢查它們。 這是學習的唯一途徑。 無論如何,構建 OpenJDK 並非易事,需要一些工作。 所以

build/.configure-support/generated-configure.sh ...您設置了 JAVA_OPTIONS 或 JAVA_TOOL_OPTIONS。 這可能會破壞構建

與凱瑟琳的問題無關。

配置:這可以通過顯式設置 --with-boot-jdk 來解決

發生在我身上,所以我找到了上述解決方案。 它確實解決了問題並且構建通過了。 唉,由於 Linux 有其自己的神秘方式,今天早上我重新檢查並令人驚訝地配置順利通過,但由於帳戶警告被視為錯誤而構建失敗。 這通過以下方式解決

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

並刪除那里出現的 -Werror ,一切都很好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM