2012年1月26日木曜日

複数のJDKを切り替える

AndroidでFroyo以前のビルドにはJava 5, Gingerbread以降はJava 6が必要。
Ubuntuでのインストールの仕方はサイトに書いてくれてますが、会社の事情でRHELでやってみた。
RHELではデフォでopenjdk-1.6.0 が入ってるっぽい。

古いバージョンのJDKは
から取ってこれた。

Java Development Kit 5.0 Update 22のrpmをダウンロードしてきた。
(面倒だが、ダウンロードのために ORACLEのアカウントを作らされた。)

インストールしたら /usr/java/jdk1.5.0_22 以下に入った。
より新しいものがインストールされています、と言われるときは rpm に --forceをつければよい。

複数のバージョンを切り替えて使うには alternatives を用いればよいらしい。

$ alternative --display java
で現状確認。

java -ステータスは自動です。
リンクは現在 /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java を指しています。
/usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java - 優先項目 16000
 スレーブ keytool: /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/keytool
 スレーブ orbd: /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/orbd
 スレーブ pack200: /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/pack200
 スレーブ rmid: /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/rmid
 スレーブ rmiregistry: /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/rmiregistry
 スレーブ servertool: /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/servertool
 スレーブ tnameserv: /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/tnameserv
 スレーブ unpack200: /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/unpack200
 スレーブ jre_exports: /usr/lib/jvm-exports/jre-1.6.0-openjdk.x86_64
 スレーブ jre: /usr/lib/jvm/jre-1.6.0-openjdk.x86_64
 スレーブ java.1.gz: /usr/share/man/man1/java-java-1.6.0-openjdk.1.gz
 スレーブ keytool.1.gz: /usr/share/man/man1/keytool-java-1.6.0-openjdk.1.gz
 スレーブ orbd.1.gz: /usr/share/man/man1/orbd-java-1.6.0-openjdk.1.gz
 スレーブ pack200.1.gz: /usr/share/man/man1/pack200-java-1.6.0-openjdk.1.gz
 スレーブ rmid.1.gz: /usr/share/man/man1/rmid-java-1.6.0-openjdk.1.gz
 スレーブ rmiregistry.1.gz: /usr/share/man/man1/rmiregistry-java-1.6.0-openjdk.1.gz
 スレーブ servertool.1.gz: /usr/share/man/man1/servertool-java-1.6.0-openjdk.1.gz
 スレーブ tnameserv.1.gz: /usr/share/man/man1/tnameserv-java-1.6.0-openjdk.1.gz
 スレーブ unpack200.1.gz: /usr/share/man/man1/unpack200-java-1.6.0-openjdk.1.gz
現在の「最適」バージョンは /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java です。

ぎょえ、スレーブにたくさん引き連れてる。

とりあえず、


# alternatives --install /usr/bin/java  java /usr/java/jdk1.5.0_22/bin/java  15022   \
  --slave /usr/bin/keytool     keytool     /usr/java/jdk1.5.0_22/bin/keytool      \
  --slave /usr/bin/orbd        orbd        /usr/java/jdk1.5.0_22/bin/orbd         \
  --slave /usr/bin/pack200     pack200     /usr/java/jdk1.5.0_22/bin/pack200      \
  --slave /usr/bin/rmid        rmid        /usr/java/jdk1.5.0_22/bin/rmid         \
  --slave /usr/bin/rmiregistry rmiregistry /usr/java/jdk1.5.0_22/bin/rmiregistry  \
  --slave /usr/bin/servertool  servertool  /usr/java/jdk1.5.0_22/bin/servertool   \
  --slave /usr/bin/tnameserv   tnameserv   /usr/java/jdk1.5.0_22/bin/tnameserv    \
  --slave /usr/bin/unpack200   unpack200   /usr/java/jdk1.5.0_22/bin/unpack200    \
  --slave /usr/lib/jvm/jre     jre         /usr/java/jdk1.5.0_22/jre


こんな感じでやってみた。

同様にjdk 1.6.0_30 も alternatives --installする。

あとは、
# alternatives --config java
で切り替える。


さらに javac もalternatives で切り替えられるように、
# alternatives --install /usr/java/default jdk /usr/java/jdk1.6.0_30 16030
# alternatives --install /usr/java/default jdk /usr/java/jdk1.5.0_22 15022

としました。

0 件のコメント:

コメントを投稿