本文详细介绍Window下如何编译OpenJDK17,包含源码路径,各工具下载地址,严格按照文章中的步骤来操作,你将获得一个由自己亲手编译出的jdk。
一、下载OpenJDK17源码
下载地址:GitHub - openjdk/jdk at jdk-17+35
说明:
1、kkgithub为github的国内镜像,能够提高下载速度
2、下载下来的源码存放路径:无中文、无空格
二、阅读一遍doc/building.html
简单阅读一遍源码中的编译文档,重点关注各工具的版本要求。
构建步骤主要为以下4步:
1、获取源码
2、运行配置(bash configure)
3、运行make(make images)
4、验证是否构建成功(./build/*/images/jdk/bin/java -version)
三、安装CYGWIN
CYGWIN是一个用于在windows上模拟UNIX或LINUX环境的软件,在其上可使用GNU工具集在Windows上进行嵌入式系统开发。之所以要下载这个软件,是因为后面编译OpenJDK的时候,需要用GNU Make来执行Makefile文件。
下载地址:https://www.cygwin.com/setup-x86_64.exe
说明:
1、安装在非不含中文、不含空格的路径下
2、安装必须的组件:<path to Cygwin setup>/setup-x86_64 -q -P autoconf -P make -P unzip -P zip
3、后续的配置和运行,都需要再cygwin环境下执行,双击桌面图标即可进入
四、安装Visual Studio 2019(C++编译器)
下载地址:https://aka.ms/vs/16/release/vs_professional.exe
参考地址:
创建基于网络的安装 - Visual Studio (Windows) | Microsoft Learn
说明:
1、OpenJDK17最高只支持VS2017和VS2019,不支持VS2022
2、VS安装路径不能包含中文、空格,在--with-tools-dir需要指定该位置
3、工作负荷需要勾选“使用C++的桌面开发”
4、语言包需要安装“英语”
五、安装jdk(--with-boot-jdk)
jdk编译过程中需要将Java源码编译成class文件,因此本地需要安装现有的jdk,最好版本号和openjdk保持一致。
下载地址:https://aka.ms/download-jdk/microsoft-jdk-17.0.12-windows-x64.msi
说明:jdk安装路径不能包含中文和空格,在--with-boot-jdk中需要指定该位置
六、配置依赖
在cygwin环境执行配置。
- 进入jdk源码解压目录。
- 执行清理:make dist-clean(每次编译失败需要改配置时,都需要执行清理命令)
- 执行配置:bash configure --enable-debug --with-jvm-variants=server --with-boot-jdk=/cygdrive/c/oracle_jdk-17 --with-tools-dir=/cygdrive/c/msv/2019/Professional/VC/Auxiliary/Build --disable-warnings-as-errors(jdk和vs需要替换为自己的目录,/cygdrive/c/oracle_jdk-17为cygwin模式下的路径写法,代表C:\oracle_jdk-17,这些配置项都必不可少,踩过坑)
- 执行成功提示如下,如果有错误,根据错误信息,查阅building.html中的解决方案,处理完之后执行清理,再重新执行配置
七、编译
八、验证
编译输出的jdk路径为:<jdk源码路径>\build\windows-x86_64-server-fastdebug\jdk,jdk目录即为基于源码编出绿色版jdk,进入bin目录,执行Java -version,能正确输出,即代表编译成功