前言
用Openjdk11编译Openjdk11
准备工作
1
| freetype-config --ftversion
|
下载源码包
方式一
1
| hg clone http://hg.openjdk.java.net/jdk/jdk11/
|
方式二
编译
踩坑
- 报错:
(Your Boot JDK version must be one of: 10 11)
原因
解决问题
踩坑
- 报错:
警告: [path] 错误的路径元素 "/usr/local/Cellar/openjdk@11/11.0.8/lib/tools.jar": 没有这种文件或目
原因
解决问题
- 把
jdk8/lib/tools.jar
和jdk8/lib/dt.jar
文件拷贝到jdk11/lib
目录下
踩坑
- 报错:
if (old_java_vendor_url_bug != DEFAULT_VENDOR_URL_BUG) {
原因
解决问题
- 编辑源码
1
| vim src/hotspot/share/runtime/arguments.cpp
|
1
| if (strcmp(old_java_vendor_url_bug , DEFAULT_VENDOR_URL_BUG) !=0) {
|
1
| if (old_java_vendor_url_bug != DEFAULT_VENDOR_URL_BUG) {
|
- 编辑源码
1
| vim src/hotspot/share/runtime/sharedRuntime.cpp
|
- 搜索
buffer.insts()->initialize_shared_locs((relocInfo*)locs
两次
1 2
| /buffer.insts()->initialize_shared_locs((relocInfo*)locs /buffer.insts()->initialize_shared_locs((relocInfo*)locs
|
1
| buffer.insts()->initialize_shared_locs((relocInfo*)locs_buf, sizeof(locs_buf) / sizeof(relocInfo));
|
1
| buffer.insts()->initialize_shared_locs((relocInfo*)locs_buf, (sizeof(locs_buf)) / (sizeof(relocInfo)));
|
- 编辑源码
1
| vim src/java.base/share/native/libfdlibm/e_asin.c
|
1 2 3 4 5 6 7
| else { t = x*x; p = t*(pS0+t*(pS1+t*(pS2+t*(pS3+t*(pS4+t*pS5))))); q = one+t*(qS1+t*(qS2+t*(qS3+t*qS4))); w = p/q; return x+x*w; }
|
踩坑
- 报错:
if (colorIndex < (useAppleColor) ? sun_lwawt_macosx_LWCToolkit_NUM_APPLE_COLORS : java_awt_SystemColor_NUM_COLORS) {
原因
解决问题
1
| vim src/java.desktop/macosx/native/libawt_lwawt/awt/CSystemColors.m
|
1
| if (colorIndex < (useAppleColor) ? sun_lwawt_macosx_LWCToolkit_NUM_APPLE_COLORS : java_awt_SystemColor_NUM_COLORS) {
|
1
| if (colorIndex < ((useAppleColor) ? sun_lwawt_macosx_LWCToolkit_NUM_APPLE_COLORS : java_awt_SystemColor_NUM_COLORS)) {
|
完成
1 2
| cd build/macosx-x86_64-normal-server-release/jdk/bin ./java -version
|

- 以后需要使用自己编译的jdk,只要把
build/macosx-x86_64-normal-server-release/images/jdk
目录拷贝出来即可
- 源码为下载的源码
后记
- 如果修改源码,需要重新编译,重新编译不需要完整编译,只需要增量编译即可
参考文献
哔哩哔哩——CodeSheep
CodingNote.cc的博客
Github——Matthias Baesken
CSDN——武泗海
CSDN——向小凯同学学习