j2sdk-1.4.1

简单介绍j2sdk

下载地址 (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

安装 j2sdk

我们将把两个版本都装上,你可以选择保留一个或都留着。

安装二进制版本的 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...: 指定使用正确的文件。

配置 j2sdk

配置信息

我们在 /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.

说明

appletviewer

appletviewer 在流览器外运行Java的applet程序.

extcheck

extcheck 检查特殊jar文件的标题和版本是否与在JDK 软件中的任何的扩展名冲突.

idlj

idlj 从已给的IDL文件中生成Java的联编文件.

jar

jar 合并多个文件为一个JAR 档案文件.

jarsigner

在 JAR (Java ARchive) 文件留下标记,并且确认标记过的JAR文件签名以及完整性.

java

java 通过启动一个Java的运行环境来运行一个Java的应用程序,加载一个特殊的类(class)并且调用它的主方法(method).

javac

javac 读用Java语言编写的java类(class) 和接口程序, 编译它们成字节码文件.

javadoc

javadoc 解析一系列Java 源码文件的声明和文档注释并生成一系列相关的描述类(class),接口程序(interfaces), 构造符(constructors), 方法(methods) 和域( fields)的HTML文件.

javah

javah 为了实现原始方法,生成所需的 C 头文件和源码些。

javap

javap 反汇编 Java 的class 文件.

jdb

jdb 是一个简单的命令行的错误调试程序,用于Java class文件.

keytool

keytool 是钥匙和认证的管理工具.

native2ascii

native2ascii把含有解码不支持字符的文件转换为用 Latin-1或Unicode-encoded 字符的文件.

orbd

orbd 用在 CORBA 环境中,使客户端能透明地定位和调用服务器的永久对象。

policytool

policytool 图形化的建立和管理策略(policy)文件.

rmic

rmic 生成 stub 和 skeleton 类文件,从编译后的包含远程对象实现的 Java 类的名字生成类文件。

rmid

rmid 运行激活系统守护进程。

rmiregistry

rmiregistry 在当前主机的指定端口创建和运行远程对象注册。

serialver

serialver 为一个或多个类返回易于拷贝到进化类中的 serialVersionUID.

servertool

servertool 为应用程序注册,取消注册, 启动和停止服务器提供了方便的接口.

tnameserv

tnameserv 启动 Java IDL 名称服务器.