现在在window也可以很轻松的编译OpenJDK8了。而且非常简单。
| 需要下载
我的电脑上已经有jdk8的环境了。我看网上说要编译openjdk8需要jdk7的环境。不过我没有安装7也编译成功了。
a、openjdk8:需要编译的。
b、Cygwin:编译JDK需要使用Linux上面的一些工具软件,Cygwin是一个在Window上运行这些软件的工具。
c、Visual Studio 2010 Professional:不必说,编译JDK的工具。
d、freetype:OpendJDK中swing和JConsole要使用freetype的字体渲染功能,这里是直接编译好的。GitHub项目ubawurinna/freetype-windows-binaries.
| 安装编译环境
a、解压openjdk
b、安装Visual Studio 2010 Professional
一路傻瓜式安装,没有特别配置。
c、安装cygwin:
傻瓜式安装,可以选择安装地址。不知道为什么这一步我的没有,不管网上找了一个加上去,添加如图地址:
然后在下一步有一个选择packages,要选择一些安装包。
在下载的openjdk里面有一个html文件:README-builds.html,打开能找到要下载的包,根据package这一列去搜索,再根据描述去判断,找到后选择版本,然后在后面一栏勾上就可以了。
d、freetype
下载下来后,修改一下文件名称,把win64改成lib。大名称也改下。如下图:
| 开始编译
编译也很简单,就两步:配置和编译。不过配置和编译都是在cygwin里面进行的。在配置和编译过程中似乎必然会出现两个异常,可以提前解决,解决方案看第4步内容。
a、配置
打开cygwin,首先window的所以目录都是挂载在/cygdirve目录下的,所以进入进入jdk根目录命令是"cd /cygdirve/d/tools/openjdk"。然后执行配置命令"./configure --with-freetype=/cygdrive/d/tools/freetype --with-target-bits=64 --enable-debug"。具体如下图:
配置完成如下图:
b、编译
配置完成后直接运行命令"make",出现异常解决后"make clean"后在执行"make"。,"make dist-clean"命令可以清除配置。这个过程用的时间较长,我用了差不多一个小时。完成如下图:
c、验证
进入文件夹"D:\tools\openjdk\build\windows-x86_64-normal-server-fastdebug\jdk\bin",执行命令"javac -version"、"java -version"验证。
4、异常处理
一共两个异常,配置期一个编译期一个。
第一个配置期异常,在执行了命令
"bash ./configure --with-freetype=/cygdrive/e/freetype --with-target-bits=64"后一般都会有版本太老的问题,如下如图:
这个问题只是openjdk限制了cygwin的版本,cygwin新版本是完全兼容老版本的。所以可以直接注释调openjdk里面的限制。打开文件:D:\tools\openjdk\common\autoconf\generated-configure.sh。如下图:
在文件中搜索“Your cygwin is too old”找到位置。然后注释其中7217到7255行,如下图:
第二个编译期异常如下图:
这是由于cvtres.exe版本错误导致的结果。因为我们安装的Visual Studio 2010 Professional下面也有两个,我们C盘下也有。所以把VS下这两个修改名称就行。修改的两个文件:
D:\tools\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe
D:\tools\Microsoft Visual Studio 10.0\VC\bin\amd64\cvtres.exe
把他们的名称改成cvtres.exe.bak就可以了。
在C:\Windows\Microsoft.NET\Framework\v4.0.30319下面的cvtres.exe就可以被使用了。
Java程序员日常学习笔记,如理解有误欢迎各位交流讨论!