注意,编译出来的jdk,在windows上无法使用,要在类unix(linux)系统中使用
此次使用的服务器是centos系统,12核,16G,所以编译起来相对较快(所以很慢的话,可能是服务器配置不高,可以等)。如果在虚拟机中编译的话,内存可以稍微给大一点。
-
先下载一个jdk1.8的源码
Tags · openjdk/jdk · GitHub 选择tag为
jdk-jdk8-b120
的,下载源码 -
下载一个java7,因为编译的时候,需要编译java代码
-
把两个文件都放入linux服务器中
unzip解压
jdk-jdk8-b120.zip
,tar -zxvf 解压jdk_ri_7u75-b13-linux-x64-18_dec_2014.tar.gz
-
安装一些依赖
yum install libXtst-devel libXt-devel libXrender-devel cups-devel alsa-lib-devel
-
检查配置
sh ./configure --with-target-bits=64 --with-jvm-variants=server --with-debug-level=slowdebug --disable-zip-debug-info --with-boot-jdk=/usr/local/sy/java-se-7u75-ri
这个
sh ./configure
实际上会去执行common/autoconf/configure
脚本。想要查看更多配置,可以使用sh ./configure --help
命令这条命令是用于配置Java开发工具包(JDK)的编译过程的。具体来说,命令的各个部分意味着:
-
sh ./configure
:使用shell(sh)执行当前目录下的configure
脚本。这个脚本是用来配置JDK编译环境的。 -
--with-target-bits=64
:指定目标系统的位数为64位。这意味着编译出的JDK将运行在64位的操作系统上。 -
--with-jvm-variants=server
:指定JVM的变体为“server”。JVM有多种变体,比如server和client,每种变体都有不同的性能和特性优化。 -
--with-debug-level=slowdebug
:设置调试级别为“slowdebug”。这个级别提供了详细的调试信息,但可能会让JDK运行得更慢。 -
--disable-zip-debug-info
:关闭调试信息文件的压缩。 -
--with-boot-jdk=/usr/local/sy/java-se-7u75-ri
:指定引导JDK的路径。引导JDK是用于编译新JDK的现有JDK。在这个例子中,使用的是Java SE 7 Update 75版本。
总的来说,这条命令配置了一个64位、优化为服务器使用的JDK编译环境,启用了详细的调试信息,同时指定了一个特定版本的引导JDK。
如果缺少了相关依赖,可以按照提示安装
出现了这个就是检查通过
执行完成上面的命令,会在
build
目录中生成一个linux-x86_64-normal-server-slowdebug
目录
-
-
找到
jdk-jdk8-b120/jdk/make/src/classes/build/tools/generatecurrencydata
目录下的GenerateCurrencyData.java
文件vim修改第284行代码,将10改成100(只要当前时间)
:set nu :284
如果不修改的话编译会报错,因为他这个代码就是说,超过10年之后再编译,编译就会抛出一个异常,所以要给他改大,或者注释那个判断
-
使用
make CONF=linux-x86_64-normal-server-slowdebug
编译,也可以使用make all
,具体可以查看下载的源码中的README-builds.html
页面,make all
会编译更多文件,要慢一些
显示这个就是编译完成了
然后cd到build/linux-x86_64-normal-server-slowdebug/jdk/bin
目录,调用./java -version
,可以发现已经是我们编译的那个jdk了
-
测试是否可以使用,可以弄一个jar包上去,然后用这个java命令启动,测试发现程序正常启动,接口能正常访问
-
想要清除编译生成的文件,可以调用
make clean
使用make all编译截图,比make的多了一些东西