新装的ubuntu15.04环境下编译openjdk8源码:
1.下载源码:openjdk-8u40-src-b25-10_feb_2015.src.zip
http://download.csdn.net/detail/socrj/8454221(CSDN上网友上传的openjdk-8u40-src-b25-10_feb_2015.7z)
官网下载地址:http://download.java.net/openjdk/jdk8/
(linux上临时装上了解压7z的包)
采用源码src.zip类型直接下载方式,没有采用官网http://openjdk.java.net/推荐的OpenJDK Mercurial repository方式进行下载
2.解压下载下来的openjdk-8u40-src-b25-10_feb_2015包,进入openjdk目录,在openjdk目录下找到README-builds.html文件,对编译步骤进行详细阅读:按照上面的步骤进行编译源码。
3.打开终端,cd到openjdk目录下:
执行以下命令安装依赖(如果没有安装aptitude,可以使用sudo apt-get install aptitude先安装aptitude)
sudo aptitude build-dep openjdk-7
sudo aptitude install openjdk-7-jdk
按照网上多个教程中编译openjdk7的方法没有编译成功,由于又是最新版本的ubuntu15.04,所以尝试编译了openjdk8,在尝试编译openjdk7的过程中,linux环境下安装了好多个版本的jdk,包括openjdk7,openjdk6,官方jdk7,官方jdk8.均位于/usr/lib/jvm/目录之下。
问题:在直接使用命令 sudo apt-get install openjdk-7-jdk安装了openjdk7之后,测试java运行环境,出现这种状况:
adongguo@adongguo-Dell-System-Inspiron-7420:~$ java -version
Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar
java version "1.7.0_79"
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)
红色部分在之后会影响到Bootstrap JDK的查找,此处使用unset JAVA_TOOL_OPTIONS方法将环境变量中JAVA_TOOL_OPTIONS删除掉,然后再测试java环境,没有了影响。(具体原因不是很清楚,只是尝试过程中发现的)
4.设置环境变量:
export LANG=C
export PATH="/usr/lib/jvm/java-7-openjdk/bin:${PATH}"
(注意:红色部分为jdk报名,可能与默认安装好的openjdk7的不同,注意修改)
另:在之前尝试编译openjdk7的过程中,执行过别人的安装依赖的一个命令(参看java虚拟机精讲-高翔龙版),如下:
sudo apt-get install build-essential gawk m4 openjdk-6-jdk libasound2-dev libcups2-dev libxrender-dev xorg-dev xutils-dev X11proto-print-dev binutils libmotif3 libmotif-dev ant
并得到了都是最新版本的各种依赖库:
Reading package lists... Done
Building dependency tree
Reading state information... Done
ant is already the newest version.
binutils is already the newest version.
build-essential is already the newest version.
gawk is already the newest version.
libasound2-dev is already the newest version.
libxrender-dev is already the newest version.
m4 is already the newest version.
x11proto-print-dev is already the newest version.
xorg-dev is already the newest version.
xutils-dev is already the newest version.
libmotif-dev is already the newest version.
libmotif3 is already the newest version.
libcups2-dev is already the newest version.
openjdk-6-jdk is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 134 not upgraded.
5.在openjdk根目录下执行命令 bash ./configure 如果出现错误根据执行过程中的日志进行排查,直到配置完成没有错误为止。
(就是在这个过程中,因为JAVA_TOOL_OPTIONS环境变量的存在出现了找不到Bootstrap JDK的问题,删除该环境变量就可以了,可以用bash ./configure --with-boot-jdk=path(path指的是自己指定的编译JDK路径,要求JDK版本大于7))
具体编译出来的类型,需要按照
6.执行命令 make all
make命令有好多的配置参数,但是这里直接按照README-builds.html文件中描述的方式采用了make all命令,至于自己想要的配置可以按照文件中描述的方式配置configure命令的参数。
7.编译过程中遇到问题只能根据上面的输出日志进行排查了,我在编译过程中万幸的没有出现问题,最后输出如下内容表示编译成功:
----- Build times -------
Start 2015-10-17 09:57:38
End 2015-10-17 10:14:32
00:00:39 corba
00:00:23 demos
00:02:20 docs
00:06:57 hotspot
00:00:33 images
00:00:25 jaxp
00:00:35 jaxws
00:04:05 jdk
00:00:39 langtools
00:00:18 nashorn
00:16:54 TOTAL
-------------------------
编译成功之后进入openjdk目录下的/build/linux-x86_64-normal-server-fastdebug/images/j2sdk-image目录(红色部分根据自己配置不同可能不同,我配置了一个fastdebug,默认为release),这个目录下就是自己编译好的openjdk8。在该目录下执行 ./java -version可以看到自己编译的jdk版本信息。
这只是一个尝试编译openjdk的过程,只是凑巧遇到的问题比较少,编译的过程比较顺利,网上各种编译openjdk7的方式,只要是显示出最终结果的都时编译出来的,只不过编译的过程对环境的要求非常苛刻,谁都不知道自己编译的时候会出现什么幺蛾子,如果决心编译成功的话,就不断的尝试吧,即使是重装系统也是有可能的。
在ubuntu15.04操作系统中安装jdk8:http://www.linuxdiyf.com/linux/13677.html
ubuntu15.04下安装JDK8:http://www.linuxdiyf.com/linux/12321.html
Ubuntu 15.04上安装JDK8,Nginx-1.6.x,Openssh-Server的方法:http://www.linuxdiyf.com/linux/12072.html
Linux下安装配置JDK(Ubuntu 15.04):http://www.linuxdiyf.com/linux/11972.html
Ubuntu 15.04下apt-get安装JDK:http://www.linuxdiyf.com/linux/11669.html