下载地址 (HTTP): http://freshmeat.net/projects/sunjdk 下载地址(FTP): 使用版本 (二进制): 1.4.1_02 使用版本 (源码): 1.4.1 软件包大小 (二进制): 59 MB 软件包大小 (源码): 77 MB 预计磁盘使用空间: 1810 MB |
j2sdk 软件包包含Sun 的java开发环境.用于开发java 程序和运行java程序时提供运行环境.它还为流览器提供插件使其可以打开java的程序.
JDK 有两种版本,一种是预编译的二进制版本,还有一种是源码包。二进制版本是与 gcc2 的库文件连接的。由于 gcc2 与 gcc3 不兼容,gcc3 编译的软件(例如 mozilla)在加载预编译的 java 插件时,经常会出现问题。源码包要求在 Sun 公司的开发者网站上注册,并接受 Sun Community Source License(太阳公司源码许可证).有些国家不能下载源码,对他们来说,就只有用二进制的版本了。
即使你打算编译 jdk 源码,你还是要先下载二进制版本,以便开始编译源码。从上面的链接下载源码和二进制包。在下载源码的时候,别忘了在同一个地方下载 mozilla 头文件包。
下载 j2sdk 源码要使用的补丁:http://downloads.linuxfromscratch.org/blfs-patches
如果你编译 jdk 时遇到了麻烦,查看一下 javafromscratch 提示:http://www.linuxfromscratch.org/~tushar/ 也许能找到一些解决办法。
对于那些由于许可证限制,确实不能下载 j2sdk 源码的人,blackdown 有一个在 gcc3 上编译的版本。查询 http://www.blackdown.org/ 以得到更多消息。
j2sdk 依赖于: xfree86-4.3.0, zip-2.3, unzip-5.50, cpio-2.5, tcsh-6.12, gcc-2.95.3 |
我们将把两个版本都装上,你可以选择保留一个或都留着。
安装二进制版本的 jdk 可以使用下面命令:
VERSION=1.4.1_02 && MV=`echo $VERSION | cut -d "_" -f 1,1` && V=`echo ${VERSION} | sed -e "s/\./_/g"` && T=`grep -a tail j2sdk-${V}-linux-i?86.bin | cut -f 2 -d " "` && tail $T j2sdk-${V}-linux-i?86.bin > install.sfx.$$ && chmod +x install.sfx.$$ && ./install.sfx.$$ && cd j2sdk${VERSION} && install -d /opt/j2sdk/j2sdk-precompiled-${MV} && mv * /opt/j2sdk/j2sdk-precompiled-${MV} |
现在二进制版本就装好了.
如果你不想编译源码,就直接跳到下一部份:配置
为刚装上的 JDK 设置环境变量.
export JAVA_HOME=/opt/j2sdk/j2sdk-precompiled-${MV} && export PATH=$PATH:${JAVA_HOME}/bin |
解压源码,打补丁:
VERSION=1.4.1 && V=`echo $VERSION | sed -e "s/\./_/g"` && unzip j2sdk-${V}-src-scsl.zip && unzip j2sdk-${V}-mozilla_headers-unix.zip && patch -Np1 -i j2sdk-${VERSION}-fix-intl-files.patch && patch -Np1 -i j2sdk-${VERSION}-link-missing-libs.patch && patch -Np1 -i j2sdk-${VERSION}-remove-fixed-paths.patch && patch -Np1 -i j2sdk-${VERSION}-syntax-fixes.patch && patch -Np1 -i j2sdk-${VERSION}-use-included-motif.patch |
设置一些影响编译的环境变量:
export ALT_BOOTDIR="$JAVA_HOME" && unset JAVA_HOME && unset CLASSPATH unset CFLAGS unset CXXFLAGS unset LDFLAGS export ALT_DEVTOOLS_PATH="/usr/bin" && export BUILD_NUMBER="blfs-`date +%s`" && export DEV_ONLY=true && export ALT_MOZILLA_PATH=$PWD && export INSANE=true && export MAKE_VERBOSE=true && export ALT_CACERTS_FILE=${ALT_BOOTDIR}/jre/lib/security/cacerts |
它里面包含的motif在现在的glibc/xfree86下不能正常编译。解决的办法是,在编译 j2sdk 前编译 motif库。注意 motif 在第一次编译的时候,会因为语法问题而出错。最粗鲁和简单的方法是用下面的编译命令:)
cd motif/lib/Xm && make || make && cd ../../.. |
用下面的命令编译和安装 j2sdk. 会出现很多缺少文件的消息,看上去有点像错误。只要编译过程不中断,这些消息就是无害的,忽略它们吧。
cd control/make && make && cd ../.. && cd control/build/linux-i?86 && cp -a j2sdk-image /opt/j2sdk/j2sdk-1.4.1 |
T=`grep...: 确定自解压包中文件的起始位置。
patch -Np1 -i j2sdk-${VERSION}-fix-intl-files.patch: 修正 intl 文件中重复消息的补丁。
patch -Np1 -i j2sdk-${VERSION}-link-missing-libs.patch: 通过增加缺少的库,来修正 unresolved symbols 错误的补丁.
patch -Np1 -i j2sdk-${VERSION}-remove-fixed-paths.patch: 安装过程要求二进制文件在指定的位置,这个补丁修改了它,让它根据当前的 PATH 环境变量来找到二进制文件。
patch -Np1 -i j2sdk-${VERSION}-syntax-fixes.patch: 修正在 gcc3 下语法错误的补丁。
patch -Np1 -i j2sdk-${VERSION}-use-included-motif.patch: 重命名自带的 motif 库,以避免与系统安装的版本冲突的补丁。
export ALT_BOOTDIR="$JAVA_HOME" : 这个命令设置在启动编译时,JDK 所在的位置。
export ALT_MOZILLA_PATH=$PWD : 这个命令设置变量指到你解压的mozilla 头文件.
export ALT_DEVTOOLS_PATH="/usr/bin" : 改变默认查找可执行文件的位置为正确值.
export BUILD_NUMBER="blfs-`date +%s`" : 这个命令帮助你确认运行环境和虚拟机的编译版本,通过附加这些信息到"java -version" 的输出中.
export DEV_ONLY=true : 这个命令排除文档的编译和对rpm的一个依赖.
unset JAVA_HOME : 这个命令清除了JAVA_HOME变量并避免了在编译中错误引指方向.
unset CLASSPATH : 这个命令清除了 CLASSPATH变量并避免了在编译中错误引指方向.
unset CFLAGS... : 这些优化参数会导致编译错误,绝不能设置它们。
export INSANE=true: 要不这样设置,编译进程就不继续。标准的编译平台是 Redhat 6.1.上面的变量保证了所有关于在非标准平台上编译的错误都被转成警告。
export MAKE_VERBOSE=true: 允许编译命令在控制台上显示出来。
export ALT_CACERTS_FILE...: 指定使用正确的文件。
我们在 /opt/j2sdk 中安装了两个版本的 Java 2 SDK.决定一下你想把哪个做为缺省使用的。比如你决定使用源码编译版本的 j2sdk, 就这样做:
ln -nsf j2sdk-1.4.1 /opt/j2sdk/j2sdk |
把下面的两行加到你的 shell 启动文件中(如 /etc/profile).
export JAVA_HOME=/opt/j2sdk/j2sdk export PATH=$PATH:$JAVA_HOME/bin |
把 $JAVA_HOME/man 加到你的 MANPATH 环境变量或 /etc/man.conf 文件里。
java 插件在 $JAVA_HOME/jre/plugin/i?86/ns610/ 目录中.你可以从你的插件目录中创建到那里的符号链接。你可以在需要 java 插件的地方创建符号链接。
j2sdk 包括 appletviewer, extcheck, idlj, jar, jarsigner, java, javac, javadoc, javah, javap, jdb, keytool, native2ascii, orbd, policytool, rmic, rmid, rmiregistry, rmiregistry, serialver, servertool 和 tnameserv.