You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在aarch64架构Linux环境下从源码编译OpenJDK 11?

ARM64架构Linux系统编译OpenJDK 11的解决方法

下面是三种可落地的操作方案,可根据自身需求选择:


方案1:修改源码消除方法匹配歧义(无需更换现有JDK15环境,操作最快)

报错的核心原因是JDK15新增了FileSystems.newFileSystem的重载方法,传null参数时编译器无法匹配到源码预期的方法,只需修改4处报错代码即可:

  • 修改src/jdk.compiler/share/classes/com/sun/tools/javac/file/JavacFileManager.java第516行:将FileSystems.newFileSystem(archivePath, null)调整为FileSystems.newFileSystem(archivePath, (ClassLoader)null)
  • 修改src/jdk.compiler/share/classes/com/sun/tools/javac/file/Locations.java第385行:将FileSystems.newFileSystem(file, null)调整为FileSystems.newFileSystem(file, (ClassLoader)null)
  • 修改src/jdk.compiler/share/classes/com/sun/tools/javac/platform/JDKPlatformProvider.java第113行:将FileSystems.newFileSystem(ctSymFile, null)调整为FileSystems.newFileSystem(ctSymFile, (ClassLoader)null)
  • 修改src/jdk.compiler/share/classes/com/sun/tools/javac/platform/JDKPlatformProvider.java第252行:将FileSystems.newFileSystem(file, null)调整为FileSystems.newFileSystem(file, (ClassLoader)null)
    修改完成后重新执行make images即可正常编译。

方案2:使用ARM64版OpenJDK11作为Boot JDK

OpenJDK编译规则支持使用同版本JDK作为Boot JDK,无需强制使用JDK9/10:

  1. 执行命令安装Debian源内置的OpenJDK11:sudo apt install openjdk-11-jdk
  2. 执行configure时指定Boot JDK路径:./configure --with-boot-jdk=/usr/lib/jvm/java-11-openjdk-arm64
  3. 正常执行make images编译即可。

方案3:x86主机交叉编译(适合QEMU模拟性能不足的场景)

如果QEMU模拟ARM64环境编译速度过慢,可在x86架构的Linux主机上配置交叉编译工具链,直接编译出ARM64版本的OpenJDK11,再将编译产物拷贝到ARM64环境使用即可。


内容的提问来源于stack exchange,提问作者Ekaterina Ivanova iceja.net

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 11:27:02