陈奇网络工作室

用centOS6.5编译openJDK及其问题

系统操作和维护

进入Java1centOS 6.5,编译openJDK。

在这个操作的时候,作者安装并配置了linux虚拟机三次。第一次踩坑。第二次踩了一些坑,尤其是2.9的坑,直接导致了我的第三次,不过最后还是成功了!这个博客特写,希望对你有帮助!

注意:请注意相关安装文件的版本号!否则有失败的风险!我已经把我用过的相关文档资源上传到51CTO了。下载地址在文末!

1.1linux环境准备

Linux环境准备:Oracle VMware virtualBox 11.0.0,安装CentOS 6.5。

(安装方法请参考在线资料)

CentOS是基于Red Hat Linux提供的免费源代码的企业级Linux发行版。

这个编译用的是64位OS,编译也是64位JDK,内存1G,硬盘20G。

实施流程参考

(阅读自述和README-builds.html)

README-builds.html包含详细的安装信息,所以你最好完整地阅读它。

最小化基本软件包的安装和安装(可选)

安装时使用最小安装。

[root @ localhost ~]# cat/etc/red hat-release

CentOS版本6.5(最终版)

[root@localhost~]# uname -m

x86_64

[root@localhost~]# uname -r

2.6.32-431.el6.x86_64

配置更新源

cd/etc/yum.repos.d/

curlhttp://mirrors.163.com/.帮助/CentOS6-Base-163.repo

目前,wget不可用。

#wgethttp://mirrors.163.com/。help/CentOS6-Base-163.repo

mvCentOS-base . repo CentOS-base . repo .巴克

mvCentOS6-Base-163

yum makecache

yum -ygroupinstall \\\'base\\\ '

yum -y安装工具

创建三个目录:

# mkdir/usr/tools/

# mkdir /usr/java/

# mkdir /usr/jdks/

上传文件工具:Xftp(默认)或安装lrzsz。

卸载linux自带的jdk。

安装完毕后,进入linux系统:

linux自带的jdk,

如果安装了OpenJDK,可以按如下方式卸载它:

rpm -qa | grepjava

rpm-enodepsjava-1 . 7 . 0-open JDK-1 . 7 . 0 . 45-2 . 4 . 3 . 3 . el6 . x86 _ 64

rpm-enodepsjava-1 . 6 . 0-open JDK-1 . 6 . 0 . 0-1 . 66 . 1 . 13 . 0 . el6 . x86 _ 64

注意:

rpm-exxxx//正常删除模式

rpm-enodespxxx//strong制删除模式。如果您使用上述命令删除其他相关文件,您可以使用此命令强制删除它们,这可能会导致意外错误和系统损坏。

1.3安装JDK1.6

以下是README-builds.html的中文原文:

自举JDK

所有OpenJDK构建都需要访问之前发布的JDK 6,这通常被称为引导JDK。JDK 6的二进制文件可以从Sun的JDK 6下载网站下载。出于构建性能的原因,让这个引导JDK在进行构建的机器的本地磁盘上可用是非常重要的。您应该始终设置ALT_BOOTDIR来指向引导JDK安装的位置,这是包含bin、lib和include的目录路径名。将bin目录放在PATH环境变量中也是一个好主意,尽管这不是必需的。

配置启动JDK。

《深入理解Java虚拟机》中的片段:

准备一个6u14以上版本的JDK(JDK 1.6以上版本),因为openJDK的一些组件(热点,JDK API,JAXWS,JAXP…….)都是用C写的,更多的代码是Java自己实现的,所以编译这些Java代码需要一个可用的JDK,官方称之为“自举JDK”。Bootstrp JDK必须是JDK6更新14或更高版本!

必须安装jdk1.6,因为在编译的过程中,需要依靠jdk1.6来初始化VM虚拟机,编译一些java文件!

特别说明:jdk和openJDK不一样,请在百度描述!

jdk1.6下载地址:http://down.51cto.com/data/2306446

将下载的jdk1.6上传到/usr/java/目录:

向用户添加可执行权限。

#chmod x jdk-6u45-linux-x64.bin或# chmod 755 JDK-6u 45-Linux-x64 . bin

#./jdk-6u45-linux-x64.bin

# ll

配置环境变量,然后测试:

# Java版本

[注意:如果安装JDK1.7或更高版本,在执行最后一次make操作时会出现错误:参见2.6]

1.4下载openJDK 1.71.4.1推荐下载open JDK的方法。

OpenJDK下载地址:http://www . Java . net/download/open JDK/JDK 7 u 6/promoted/b24/open JDK-7 u 6-FCS-src-b24-28 _ aug _ 2012 . zip。

使用Xftp插件上传下载的openJDK,并将其上传到/usr/jdk/

# unzip open JDK-7u 6-FCS-src-b24-28 _ aug _ 2012 . zip

再次删除原始文件:(不必删除备份)

【不建议安装openJDK1.7,请参考:2.1】

1.5编译openJDK相关的依赖包

请注意,您必须首先返回到根目录:

[root@openjdk usr]# cd /

1.5.1安装必备软件包:

yum -y安装alsa-lib-devel

yum -y安装杯-开发

yum -y安装libXi-devel

yum -y安装gccgcc-c

yum -y安装libX*

安装freetype

Freetype下载地址:http://sourceforge.net/projects/freetype/files/freetype2/

下载的freetype-2.5.5资源地址:http://down.51cto.com/data/2306445.

进入工具目录:

# cd /usr/tools/

【注意:安装freetype会出现版本编译错误!第一次安装Freetype-2.5.2,编译失败!见2.2。最终选择了Freetype2.5.5]。

1.5.2.1模式一:(不推荐,速度太慢)

安装freetype2.5.5版本2.5.5:

//下载地址可能会改变。请根据自己的需要填写路径和相关版本。

[root @ open JDK tools]# wget https://www . SourceForge . net/projects/freetype/files/freetype 2/2 . 5 . 5/freetype-2 . 5 . 5 . tar . gz

或者wget http://download . savannah . GNU . org/releases/freetype/freetype-2 . 5 . 5 . tar . gz

注意:可能会出现下载不到或者速度很慢的情况。推荐方法二!

错误报告:

塔尔-xvf freetype-2.5.5.tar.gz

cd freetype-2.5.5。/配置

制造

进行安装

成功!

或者:

Freetype也可以被yum安装:(没试过)

yum install gcc gcc-c freetype-develib 2-devel cairo-devel

1.5.2.2模式2

Freetype-2.5.5.tar.gz下载地址:http://sourceforge.net/projects/freetype/files/freetype2/

手动下载freetype2.5.5:

使用Xftp将文件上传到/usr/tools/目录:

解压:

# tarxvf freetype-2.5.5.tar.gz

# cd freetype-2.5.5

#./配置

#制造

#进行安装

安装ant

蚂蚁下载地址:http://archive.apache.org/dist/ant/binaries/

下载的apache-ant-1.9.6资源地址:http://down.51cto.com/data/2306443.

# CD/应用程序/工具/

同样的两种方式:

模式一:(下载速度有点慢)

# wget http://archive . Apache . org/dist/ant/binaries/Apache-ant-1 . 9 . 6-bin . zip

#解压缩apache-ant-1.9.6-bin.zip

模式2:

从官网下载ant源代码,然后用Xftp上传到linux系统:

#解压缩apache-ant-1.9.6-bin.zip或tarxvfapache-ant-1.9.6-bin.tar.gz

# ln-s/usr/tools/Apache-ant-1 . 9 . 6/bin/ant/usr/bin/ant

//lns为另一个位置的文件或目录建立同步链接。

链接之后,ant命令就可用了!

1.5.4检查上述配置:

1.6编译1.6.1设置1.6.1.1当局给出的环境变量配置:(不推荐)

注:相关参数未修改。

#设置语言

出口

导出ALT _ BOOTDIR=/usr/lib/JVM/JDK 1 . 7 . 0/

#允许自动下载依赖包

导出ALLOW_DOWNLOADS=true

#使用预编译头文件,没有它编译会比较慢。

export USE _ PRECOMPILED _ HEADER=true

#编译什么

export BUILD_LANGTOOLS=true

导出BUILD_JAXP=true

export BUILD_JAXWS=true

导出BUILD_CORBA=true

导出BUILD_HOSTPOT=true

导出BUILD_JDK=true

#要编译的版本

export SKIP_DEBUG_BUILD=false

export SKIP _ fast debug _ BUILD=true

导出DEBUG_NAME=debug

#将其设置为FALSE可以避免javaws和浏览器Java插件等部分构建。

构建部署=假

#将其设置为false,将不会构建安装包。因为安装包里有一些奇怪的依赖关系。

#但即使你不构建它,你已经有了一个完整的JDK形象,所以你仍然不需要构建它。

BUILD_INSTALL=false

#存储编译结果

导出ALT _ output dir=/home/lzl/open JDK/build

取消设置类路径

取消设置JAVA_HOME

make 21 | teeALT _ output dir/build . log

1.6.1.2的实际配置

取消设置类路径

取消设置JAVA_HOME

出口

exportalt _ bootdir=/usr/Java/JDK 1 . 6 . 0 _ 45 #预装jdk7目录。

exportANT _ HOME=/usr/tools/Apache-ant-1。9 .6号蚂蚁安装目录

export alt _ FREETYPE _ HEADERS _ PATH=/usr/local/include/FREETYPE 2 # FREETYPE 2头文件安装目录

export alt _ FREETYPE _ LIB _ PATH=/usr/local/LIB # FREETYPE 2 LIB目录

export ARCH_DATA_MODEL=64 #64位

export SKIP_DEBUG_BUILD=false

export SKIP _ fast debug _ BUILD=true

导出调试名称=调试

# 输出路径

export ALT _ output dir=/usr/open JDK

配置完成,生效!

#source /etc/profile

【在配置环境变量的时候,遇到一个错误:参阅:2.3】

保持理智检查

检查环境是否配置好与编译jdk源码

#cd /usr/jdk/

# cd openjdk

# pwd

#保持理智

成功!

【第一次走到这一步的时候,犯了一个jdk和openJDK相同的概念错误,参阅:2.4】

制作编译

如果之前编译过,请先进行清洁:

#变得干净

#全部制作

最终:看到了成功!

【第一次全部制作由于jdk版本的问题,遇到了一个错误,参阅:2.5】

重复:清洁和全部制作

【第二次全部制作由于当前日期。属性时间配置文件的问题,遇到了一个错误,参阅:2.7和2.8】

重复:清洁和全部制作

【硬盘空间不足的错误,参阅:2.9】

1.7跑一下自己编译的虚拟机1.7.1方式一(推荐)

再查看编译成功后的JDK版本:

由于配置安装输出路径,进入配置的路径下:

进入usr/openjdk/bin目录,输入. Java版本

到这一步,编译openJDK算成功了!

【注意:如果在配置环境变量的时候,没有配置输出路径# export alt _ output dir=/usr/open JDK;默认会在openjdk目录下,创建一个建设目录存放输出数据,那就变成了:

进入openjdk/build/bin目录,输入. Java版本

1.7.2方式二

进入目录

(默认情况下:路径是:/打开JDK/build/Linux-amd64/hotspot/output dir/Linux _ amd64 _ compiler 2)

配置输出路径后的热点目录是:

[root @ openjdkhotspot]# CD/usr/open JDK/hotspot/

# cd输出目录/Linux _ amd64 _编译器2

# ll

下面有好几种优化级别的编译版本:

进入到产品目录中:

# cd产品/

# ll

这里要在环境。嘘配置下环境变量,指向共享库:(路径根据实际情况调整配置)

LD_LIBRARY_PATH=.$ { JAVA _ HOME }/JRE/lib/amd64/native _ threads:$ { JAVA _ HOME }/JRE/lib/amd64:/opt/open JDK room/open JDK/build/Linux-amd64/hotspot/output dir/Linux _ amd64 _ compiler 2/product

导出LD _库_路径

下面贴出我这个文件的完整内容:

#由/usr/JDK/打开JDK/热点/make/Linux/makefiles/构建树。制造生成

#:$ { JAVA _ HOME:=/usr/JAVA/JDK 1。6 .0 _ 45 }

JAVA _ HOME=/usr/open JDK/j2sdk-p _ w _ picpath #这个配置根据具体情况而定:默认是:/usr/打开JDK/build/Linux-amd64/j2sdk-p _ w _ picpath

类路径=。$ { JAVA _ HOME }/JRE/lib/rt . jar:$ { JAVA _ HOME }/JRE/lib/i18n。冲突

热点_构建_用户=热点中的根

导出JAVA _ HOME类路径hotspot _ BUILD _ USER

#添加

#后面的那段路径,默认配置是:/usr/打开JDK/build/Linux-amd64/hotspot/output dir/Linux _ amd64 _ compiler 2/product

LD_LIBRARY_PATH=.$ { JAVA _ HOME }/JRE/lib/amd64/native _ threads:$ { JAVA _ HOME }/JRE/lib/amd64:/usr/open JDK/hotspot/output dir/Linux _ amd64 _ compiler 2/product

导出LD _库_路径

下面执行:

#来源. env.sh

# cd.

回到上一级目录,进入:/usr/打开JDK/hotspot/output dir/Linux _ amd64 _ compiler 2/jvmg

# cd jvmg/

# ./test _伽马

运行成功!

1.8在NetBeans编译运行热点

参考博客:http://www。cn博客。com/zyx 1314/p/5638596。超文本标记语言

2踩的坑2.1安装openJDK1.7不推荐方法(前提是用centOS):

【乌班图虚拟机推荐使用】具体参考网址如下:

http://openjdk.java.net/install/index.html

$ sudo apt-getinstall打开JDK-7-JRE

原因:CentOS的软件安装工具不是容易得到是妙的

yum (YellowdogUpdater已修改)是一个集与查找,安装,更新和删除程序的Linux操作系统操作系统软件。

#好吃安装xxx所以…

2.1.1问题

没有可用的软件包openjdk-7-jre .错误:无所事事

【解决这个一连串问题的时候:请备份libperl.so(必须):如果后续报错:

:加载共享库时出错:/usr/lib 64/perl 5/CORE/lib perl . so:文件太短

此时,libperl.so会备份该文件,并且可以恢复它。该操作导致libperl.so为空,因此在还原之后。解决方案完成,相关组件可以正常使用。】

查看yum服务上的openjdk安装包:

[root @ open JDK Java]# yum list | grepopenjdk

更新百胜仓库:(慎用!不要只是yumupdate,有时候系统启动不了,因为会更新你的内核,停了之后进入系统,最好是yum clean all)。

[root@openjdk java]# yum -y更新

* * * * * * * * * * * * * * * * * * * * *(等待下一个小时。)实际操作中可以跳过这一步!

通过yum的查找参数列出与openjdk相关的包名:

[root @ open JDK Java]# yum search open JDK

安装yum存储库中存在的版本:

[root @ open JDK Java]# yum install Java-1 . 7 . 0-open JDK . x86 _ 64;

测试安装是否成功:

2.2安装freetype2.5.2(错误版本)

Freetype-2.5.2.tar.gz下载地址:http://sourceforge.net/projects/freetype/files/freetype2/

手动下载freetype2.5.2:

使用Xftp将文件上传到/usr/tools/目录:

解压:

tarxvf freetype-2.5.2.tar.gz

cd freetype-2.5.2。/配置

错误:解决方案:

输入:[root @ open JDK freetype-2 . 5 . 2]# CD builds/UNIX/

[root@openjdk unix]#。/配置

回到freetype-2.5.2目录并执行make:

激光唱片.

激光唱片.

制造

[root @ open JDK freetype-2 . 5 . 2]# make

config . MK:25:buildings/UNIX/UNIX-def . MK:没有这样的文件或目录。

config . MK:26:buildings/UNIX/UNIX-cc . MK:没有这样的文件或目录。

make:* * * *没有创建目标“buildings/unix/unix-cc.mk”的规则。停下来。

我在网上查了一下。没有相关的解决方案:

“我下载了几个版本的freeType,以源代码的形式安装(configure/make make install),但是从来都不行。"同病相怜。

检查完权限后,我将授予root权限再试一次:并手动创建这两个文件。

不能解决问题删除freetype相关信息。

改2.5.5版本解决问题!

#进行安装

2.3配置环境变量时出错

注意:第一次配置编译时安装了jdk1.7,可以忽略,与此错误无关!

错误报告:

概要文件配置文件肯定有问题:

导出的一般原因`=\ \ '不是有效的标识符

原因是在修改后的/etc/profile文件中

添加空格!

去掉空格,解决问题!

2.4make健全性错误

[错误:

make:* * * *没有使目标“健全性”停止的规则。

上述问题的根本原因是,项目更改路径或文件夹名称后,以前生成的。o.d文件重新编译时不会重新编译,导致这个问题。根本原因解决方案是删除编译后的obj文件夹。然后重新编译。

主要是因为我前期没有下载openjdk,而是直接用jdk编译的!原谅我的无知!再加工后:

成功!

2.5制造所有错误

错误:jdk1.7初始化VM时出错!

使用位于/usr/java/jdk1.7.0_75/jre的java运行时

虚拟机初始化期间出错

这个问题的解决方案:http://stack overflow . com/questions/26804355/cannot-compile-open JDK 7-source-code-on-centos 6-5。

下载安装Oracle JDK 1 . 6 . 0 _ 45,设置为ALT_BOOTDIR和ALT _ JDK _导入_路径,请勿使用OpenJDK1.7

解决方案:

更改JDK版本,重新配置JDK版本jdk1.6.0_45,并执行# make(参考2.6)。

2.6更改JDK版本

删除jdk1.7目录及其下的文件。

安装jdk1.6

将下载的jdk1.6上传到/usr/java/目录:

向用户添加可执行权限。

#chmod x jdk-6u45-linux-x64.bin或# chmod 755 JDK-6u 45-Linux-x64 . bin

#./jdk-6u45-linux-x64.bin

# ll

更改环境变量配置

保存并生效

#source /etc/profile

进入/usr/jdk/openjdk目录,执行1.5.3。

2.7错误:时间距离现在超过10年:1136059200000

解决方案参考博客:http://www.bubuko.com/infodetail-1306571.html

data.temp \\\\

./././src/share/classes/Java/util/currency data . properties

错误:时间距离现在超过10年:1136059200000

java.lang.RuntimeException:时间距离现在10年以上:1136059200000

修改CurrentDate.properties时间配置文件(包含2004年、2005年、2006年),只需将10年前的时间改为10年内即可(将所有时间格式改为2017年前10年内的年数)。

文件路径:/usr/JDK/open JDK/JDK/src/share/classes/Java/util/currency data . properties

下面介绍相应补丁的来源。

https://bugs.gentoo.org/show_bug.cgi?id=534118#c3

以下是对问题原因的描述。

https://bugs.gentoo.org/show_bug.cgi?id=534118#c7

如果不想仔细看,可以直接访问补丁网站:

http://hg . open JDK . Java . net/jdk7u/jdk7u/JDK/rev/74a 70385 c21d # l 11.1

CurrentDate.properties的文件地址为http://hg . open JDK . Java . net/jdk7u/jdk7u/JDK/file/74a 70385 c 21d/src/share/classes/Java/util/currency data . properties。

请先备份CurrentDate.properties文件!在linux系统上修改文件之前一定要养成备份文件的习惯!

复制该文件的内容,并在相应的CurrentDate.properties文件中覆盖它。

注意:千万不要盖。否则会出现新的问题:2.8

2.8错误:未列出有效的货币代码:欧元

data.temp \\\\

./././src/share/classes/Java/util/currency data . properties

错误:货币代码未列为有效:欧元

Java . lang . runtime异常:货币代码未列为有效:欧元

这是直接覆盖造成的错误,说明配置文件除了年份还有改动!

我自己修改的文件CurrencyData.properties:下载地址请参考文末!

本文参考博文:

http://www.linuxidc.com/Linux/2015-05/117248.htm

http://www.bubuko.com/infodetail-1306571.html

2.9硬盘空间不足

[错误:内存不足!解决方案:重新安装linux虚拟机。】当时的硬盘是8G!

3相关信息的下载地址

Apache-ant-1.9.6资源地址:http://down.51cto.com/data/2306443

资源地址:http://down.51cto.com/data/2306442

Freetype-2.5.5资源地址:http://down.51cto.com/data/2306445

JDK-6U45-Linux-x64。bin(jdk1.6版)资源地址:http://down.51cto.com/data/2306446,表示JDK 1.6因为单次数据上传只能50M,所以分为两部分。

解压时,解压到同一个文件夹即可。

更多关于云服务器,域名注册,虚拟主机的问题,请访问西部数码代理官网:www.chenqinet.cn。

后台-系统设置-扩展变量-手机广告位-内容页底部广告位3