编译openjdk && 调试java

背景

一直很想深入了解java运行机制,想编译debug版本openjdk

实践

安装环境

安装vmware软件,第一步就遇到很多麻烦,找不到免费的vmware。

后来下载了官网的,在github和百度一直搜如何破解,幸亏有大佬传了比较全的破解方式。

破解地址

准备安装操作系统,本人选择centos7,刚上来发现可以通过debug-install命令安装调试信息,心想着这样都不用自己编译了,但发现调试版本和github上版本不对套。而且jdk安装版本和debug信息版本还不对套。

编译openjdk

第一次编没经验,为了少走弯路,网上搜一大堆方法。包括以前都一直有看,没去实践,印象里要装低版本JDK,然后configure各种入参,坑爹很。此次搜索发现centos有点简单,都不敢相信。

yum install hg
hg clone http://hg.openjdk.java.net/jdk8u/jdk8u openjdk8
#进入opnjdk8文件夹//执行如下命令拉取源码
sh get_source.sh  //可能要多次执行,因为代码一次无法全部拉取下来。 会在编译时出问题

编译配置

chmod +x configure
./configure --enable-debug

 

参考链接:

手动编译jdk1.8源码-centos7_java1.8版本怎么编译-CSDN博客

https://www.cnblogs.com/liudaihuablogs/p/13462731.html

Centos7编译openjdk8 - 简书

JVM之CentOS7编译openjdk1.7 - 简书

遇到问题

1、configure会提示各种未安装软件,按照提示来就好了,或者直接按照参考链接里一股脑儿装。

2、编译JDK失败,编译java等源码都未报错。

报错解决:

Generating Nimbus source files
[Error] encoded value was less than 0: encode(-8.326673E-17, 5.0, 11.0, 16.0)
[Error] encoded value was less than 0: encode(-0.05882353, 1.0, 24.0, 25.0)
[Error] encoded value was greater than 3: encode(15.029411, 1.0, 14.0, 15.0)
[Error] encoded value was less than 0: encode(-0.05882353, 1.0, 24.0, 25.0)
[Error] encoded value was greater than 3: encode(15.029411, 1.0, 14.0, 15.0)
[Error] encoded value was less than 0: encode(-0.05882353, 1.0, 24.0, 25.0)
[Error] encoded value was less than 0: encode(-0.05882353, 1.0, 24.0, 25.0)
[Error] encoded value was greater than 3: encode(15.029411, 1.0, 14.0, 15.0)
[Error] encoded value was less than 0: encode(-0.05882353, 1.0, 24.0, 25.0)
[Error] encoded value was greater than 3: encode(15.029411, 1.0, 14.0, 15.0)
[Error] encoded value was less than 0: encode(-0.05882353, 1.0, 24.0, 25.0)
[Error] encoded value was less than 0: encode(-0.05882353, 1.0, 24.0, 25.0)
[Error] encoded value was greater than 3: encode(15.029411, 1.0, 14.0, 15.0)
[Error] encoded value was less than 0: encode(-0.05882353, 1.0, 24.0, 25.0)
[Error] encoded value was greater than 3: encode(15.029411, 1.0, 14.0, 15.0)
[Error] encoded value was less than 0: encode(-0.05882353, 1.0, 24.0, 25.0)
[Error] Encountered Infinity: encode(-0.00877193, 0.0, 7.0, 7.0)
Compiling 4 files for BUILD_BREAKITERATOR
Generating HTML DTD file
[Parsed DTD html32 in 34ms]
Error: time is more than 10 years from present: 1388527200000
java.lang.RuntimeException: time is more than 10 years from present: 1388527200000
        at build.tools.generatecurrencydata.GenerateCurrencyData.makeSpecialCaseEntry(GenerateCurrencyData.java:285)
        at build.tools.generatecurrencydata.GenerateCurrencyData.buildMainAndSpecialCaseTables(GenerateCurrencyData.java:225)
        at build.tools.generatecurrencydata.GenerateCurrencyData.main(GenerateCurrencyData.java:154)
gmake[2]: *** [/root/openjdk8/build/linux-x86_64-normal-server-fastdebug/jdk/lib/currency.data] Error 1
gmake[1]: *** [gendata-only] Error 2

通过find 下 GenerateCurrencyData,再找到方法就好了,本人也是事先了搜了下代码仓发现抱错代码如下

只要把上述10年改成100年就好了。省得还网上改各种配置,使得时间time减去当前时间小于10年。

最终成果

编译成功,辛亏之前编译过的步骤不会重新再跑一遍,那就坑了!

是debug版本

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chenxuezhou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值