ARM64架构下,OpenJDK的官方Docker镜像为何没有8版本?(1)
由于篇幅限制,小编在此截出几张知识讲解的图解《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!**
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!
root@raspbian:~# echo $(dpkg --print-architecture)
arm64
-
看上图红框3中的代码,如果处理器架构是arm64,那么变量upstreamArch就等于aarch64;
-
看上图红框4中的代码,下载OpenJDK包的地址是${JAVA_BASE_URL}KaTeX parse error: Expected group after ‘_’ at position 21: …reamArch}_linux_̲{JAVA_URL_VERSION}.tar.gz,这里面JAVA_BASE_URL、upstreamArch、JAVA_URL_VERSION的值都已经确定了,于是真实的地址就是:
https://github.com/AdoptOpenJDK/openjdk8-upstream-binaries/releases/download/jdk8u222-b10/OpenJDK8U-jdk_aarch64_linux_8u222b10.tar.gz
-
在浏览器输入上述地址试试,发现浏览器返回的是404错误,也就是说此地址无效;
-
将上述地址中的aarch64替换成x64,看看X86处理机架构下有没有OpenJDK8的下载包,新地址是:https://github.com/AdoptOpenJDK/openjdk8-upstream-binaries/releases/download/jdk8u222-b10/OpenJDK8U-jdk_x64_linux_8u222b10.tar.gz ,此地址可以顺利下载;
-
来看看OpenJDK官方为JDK8版本提供了哪些下载包,地址是:https://github.com/AdoptOpenJDK/openjdk8-upstream-binaries/releases ,如下图,清一色的x86架构:

结论
OpenJDK官方镜像的制作原理,是依据宿主机CPU架构去官方下载对应的OpenJDK安装包,再做成镜像,目前OpenJKD8的安装包并没有提供ARM版本,因此官方没有提供ARM版本的OpenJDK8的Docker镜像;
解决之道
现状是OpenJDK官方在ARM64架构不提供8版本的官方Docker镜像,解决此问题的思路有两个(个人观点,欢迎探讨)
-
自己编译一个8版本的OpenJDK安装包,以此来做Docker镜像;
-
Oracle提供了ARM版本的JDKD安装包,以此包来做Docker镜像;
-
用OpenJDK的11版本,但是11和8的差异要自行处理;
对于第一种方式,自己编译8版本的OpenJDK,难度太大(对我自己而言),因为编译OpenJDK需要低版本的OpenJDK作为编译工具,也就是说我要找到ARM版本的OpenJDK7,才能编译ARM版本的OpenJDK8,因此我觉得这样做的难度太大…
对于第二种和第三种,后续的章节我们一起来实战吧;
最后
由于篇幅限制,小编在此截出几张知识讲解的图解





《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!
题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!**
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)