您的位置:首页 > 编程语言 > Java开发

自己动手编译的openjdk7u6(在ubuntu14.04)

2015-10-06 12:46 501 查看
搞了一个星期太累,哈哈,总算是搞出来了,在这里写下经验,以便以后使用


参考:http://www.th7.cn/system/lin/201408/66351.shtml,

准备:ubuntu14.04 lts 64,openjdk源码文件(openjdk-7u6-fcs-src-b24-28_aug_2012.zip)

源码下载:http://www.java.net/download/openjdk/jdk7u6/promoted/b24/openjdk-7u6-fcs-src-b24-28_aug_2012.zip

步骤:

1》配置编译环境:



apt-get build-dep openjdk-6

apt-get install openjdk-6-jdk

apt-get install libasound-dev build-essential
2)配置环境变量:

sudo vi /etc/profile

在最后加上:

    export J***A_HOME=/usr/lib/jvm/java-1.6.0-openjdk-amd64

    export JRE_HOME=${J***A_HOME}/jre

    export CLASSPATH=.:$J***A_HOME/lib/dt.jar:$J***A_HOME/lib/tools.jar

    export PATH=${J***A_HOME}/bin:$PATH

source /etc/profile使jdk环境生效。(我碰到了openjdk的bug倒是不能编译,这里先用openjdk)

可以运行:java -version和javac -version看看版本


3)安排路径

下载好源码文件后:先放在/home/***目录下

unzip openjdk-7u6-fcs-src-b24-28_aug_2012.zip


得到一个openjdk文件夹,然后进入

cd openjdk

4)编译
创建一个脚本(build.sh)
#!/bin/bash
#设置语言
export LANG=C
export ALT_BOOTDIR=/usr/lib/jvm/java-1.6.0-openjdk-amd64/

#允许自动下载依赖包
export ALLOW_DOWNLOADS=true

#使用预编译头文件,不加这个编译会更慢
export USE_PRECOMPILED_HEADER=true

#要编译的内容
export BUILD_LANGTOOLS=true
export BUILD_JAXP=true
export BUILD_JAXWS=true
export BUILD_CORBA=true
export BUILD_HOSTPOT=true
export BUILD_JDK=true

#要编译的版本
export SKIP_DEBUG_BUILD=false
export SKIP_FASTDEBUG_BUILD=true
export DEBUG_NAME=debug

#把它设置为FALSE可以避免javaws和浏览器Java插件之类的部分build
BUILD_DEPLOY=false

#把它设置为false就不会build出安装包。因为安装包里有一些奇怪的依赖
#但即便不build出它也已经得到完整的JDK镜像,所以还是不用build它
BUILD_INSTALL=false

#存放编译结果
export ALT_OUTPUTDIR=/home/openjdk/build

unset CLASSPATH
unset J***A_HOME
make sanity
#makeARCH_DATA_MODEL=64 
#BUILD_JAXWS=false 
#BUILD_JAXP=false
make 2>&1 | tee $ALT_OUTPUTDIR/build.log




运行 sh build.sh

接下来是碰到的问题以及解决方法:

把使用语言设置为英文:系统设置----语言支持

# 自2015年开始一般会出现如下异常
/opt/jdk1.6.0_31/bin/java  -Xmx896m -Xms128m -XX:PermSize=32m -XX:MaxPermSize=160m -jar /root/openjdk6/build/btjars/generatecurrencydata.jar -o /root/openjdk6/build/lib/currency.data.temp \
                < ../../../src/share/classes/java/util/CurrencyData.properties
Error: time is more than 10 years from present: 1120165200000
java.lang.RuntimeException: time is more than 10 years from present: 1120165200000
        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)
make[4]: *** [/root/openjdk6/build/lib/currency.data] Error 1
# 通过修改CurrencyData.properties文件, 把10年之前的时间修改为10年之内即可(把所有的时间格式的时间改为2015以前的十年以
内的年数)

# 部分amd64架构的机器可能会出现如下异常
cd linux_amd64_compiler2/product && ./test_gamma
java full version "1.6.0_36-b36"
./gamma: relocation error: /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.36.x86_64/jre/lib/amd64/libjava.so: symbol JVM_FindClassFromCaller, version SUNWprivate_1.1 not defined in file libjvm.so with link time reference
# 主要是由于OpenJDK的一个bug导致的, 把Open JDK替换为Oracle JDK即可, 注意同时修改build.sh(就是</span><span style="font-family:Liberation Serif,serif;"><span style="font-size:18px;"><span lang="en-US">
export ALT_BOOTDIR=</span></span></span><span style="font-size:14px;">改为</span><span style="font-size:14px;">Oracle</span><span style="font-size:14px;">JDK的路径)中的内容,安装</span><span style="font-size:14px;">OracleJDK请参考其他网站(同时需要修改环境变量哦)

</span>

Ubuntu Linux下安装Oracle JDK

:blog.csdn.net/gobitan/article/details/24322561
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: