Update: Ubuntu下双JDK设置&Java TCK相关配置


一直想试试Ubuntu下跑TCK的感觉,发现还是很容易的,Nokia的Java TCK需要同时配置jdk1.4和1.5,Linux的分享精神很好,然后我就找到了在Ubuntu中装2个java的方法

1、其实先安装啥都一样,后面可以调整调用的优先顺序。先装1.5吧,这个简单极了,官方软件源里面就有:
$sudo apt-get install sun-java5-jre
不装jdk是为了省地方,1.4装jdk就行(我估计装1.5的jre都没问题)

2、安装jdk1.4 ,得自己单干。从官网下载j2sdk-1_4_2_19-linux-i586.bin,那个表填得太麻烦,我帮忙填了表搞到了link
$sudo cp j2sdk-1_4_2_19-linux-i586.bin /usr/lib/jvm/

$sudo ./j2sdk-1_4_2_19-linux-i586.bin

然后是很长很长的许可,一直回车吧,当它问你yes/no的时候,输入yes回车。

这样在/usr/lib/jvm下就会解压出一个j2sdk1.4.2_19的目录,做一个链接以便今后使用

$sudo ln -s j2sdk1.4.2_19 java-1.4.2-sun

java-1.4.2-sun这个链接的名字随意,不过我看1.5的链接也是这个格式,就随其自然了。

3、此时执行

$sudo update-alternatives –config java

由于jre是apt-get安装,jdk1.4是手动安装,因此只有一个jre5被认出来。若要把jdk1.4也加入,则进行如下操作:

$sudo update-alternatives –display java

显示:

java – 状态为 auto

链接目前指向 /usr/lib/jvm/java-1.5.0-sun/jre/bin/java

/usr/lib/jvm/java-1.5.0-sun/jre/bin/java – 优先级 53

slave java.1.gz:/usr/lib/jvm/java-1.5.0-sun/jre/man/man1/java.1.gz
可以看到其优先级是53,我需要再做个优先级50,比jdk5低的jdk4链接。优先级高低看你以哪个jdk为主,今后也可以根据–config java来修改,无所谓了。
然后再执行

$sudo update-alternatives  –install /usr/bin/java java
/usr/lib/jvm/java-1.4.2-sun/jre/bin/java 60  –slave
/usr/share/man/man1/java.1.gz java.1.gz
/usr/lib/jvm/java-1.4.2-sun/man/man1/java.1

建立好链接,再执行

$sudo update-alternatives –display java

java – 状态为 auto

链接目前指向 /usr/lib/jvm/java-5-sun/jre/bin/java

/usr/lib/jvm/java-5-sun/jre/bin/java – 优先级 53

slave java.1.gz:/usr/lib/jvm/java-1.5.0-sun/jre/man/man1/java.1.gz
/usr/lib/jvm/java-1.4.2-sun/jre/bin/java – 优先级 50

slave java.1.gz:/usr/lib/jvm/java-1.4.2-sun/man/man1/java.1

目前“最佳”的版本为 /usr/lib/jvm/java-5-sun/jre/bin/java。

可以看到jdk1.4已加入配置中,今后若要对优先级进行调整执行
$sudo update-alertnatives –config java
即可。所谓优先级就是直接
$java
会调用的java版本。优先级高的先被调用。加个-version就知道了。
4、配置环境变量

$sudo gedit /etc/environment

在最后添加,Linux中路径分隔是用冒号(:)的,不是Windows里面的分号(;)
CLASSPATH=.:/usr/lib/jvm/java-1.5.0-sun/lib

JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun


$sudo gedit
/etc/profile
 在最后面加上

export CLASSPATH=.:$JAVA_HOME/lib;

5.Java中中文乱码问题:

在fonts目录建立一个fallback文件夹(必须是这个名字,别的名字不好使,我试过了。。应该是Sun规定的?),然后把中文字体软连接进来:

$cd /usr/lib/jvm/java-1.5.0-sun/jre/lib/fonts
$sudo mkdir fallback
$cd fallback
$sudo cp /usr/share/fonts/truetype/arphic/uming.ttc /usr/lib/jvm/java-5-sun-1.5.0-18-1/jre/lib/fonts/fallback
$sudo mkfontdir
$sudo cat ./fonts.dir >> ../fonts.dir

现在开始TCK部分:由于是wubi安装的Ubuntu,所以可以看到Ubuntu安装分区以外的分区,还好我的Ubuntu不在TCK所在分区。

进去以后用.bat肯定是不能启动了。Linux里面的自动化脚本是shell script,在这里我们用bash的。Nokia那个生成keystore的工具其实就是bash脚本。bash脚本是以.sh结尾的。

我们只需要在JTH suite里面建立一个空文件,在里面第一行写上

# !/bin/bash

然后把原来bat文件的命令粘过来,’\‘改成‘/’就ok了。比如

java -classpath ./lib/javatest.jar com.sun.javatest.tool.Main -newDesktop

保存以后加上扩展名.sh双击就运行启动JTH了。NTH类似。

不过不知道NOKIA有没手机在linux下的驱动。。否则最大可以在GPRS下运行。。。


Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s