Ubuntu 11.04にはOpenJDKというJavaがすでにインストールされています。
端末(コマンドプロンプト)から
java -versionコマンドを打ち込んでみると
java version "1.6.0_22" OpenJDK Runtime Environment (IcedTea6 1.10.1) (6b22-1.10.1-0ubuntu1) OpenJDK 64-Bit Server VM (build 20.0-b11, mixed mode)
を表示しました。
Windowsをいじっている人にとっては聞かないJavaです。
互換Javaのようなものかと思いきや
IT用語辞典
を見ると
「OpenJDKとは、JDKをオープンソース化しようというSun Microsystemsのプロジェクト、またはそのソースコードの名称である。」
とあります。
それならsunのJDKは本家本元ではないのかと思いきや以下の記事がありました。
Sun社のJDK7、OpenJDK、そしてIcedTea:曖昧さの回避
どうもSunのJDKとOpenJDKがそれぞれ主導権争いをしているようにも見えます。
元祖か本家かというような感じ?
このあたり調べても面倒なので、未然にトラブルを防ぐためにも
windowsで使われているSunのJDKをインストールすることにしました。
以下にインストール方法を記述します。記憶を頼りにたどっているので、もし間違っていたらごめんなさい。
自分がやったらこうなった程度のものだと思ってください。
まず、
1.
oracle(sun)のサイト
からJDKをダウンロードします。
CentOSなどのRedhat系ならPRMでもいいのだろうけど、Linux x64 - Self Extracting Installerをダウンロードします。
2 ダウンロードしたディレクトリから/usr/lib/jvmへコピーします。
以下のコマンドを入力。
sudo cp /home/(ログインしている)ユーザー/ダウンロード/jdk-6426-linux-x64.bin usr/lib/jvm/
なお、このディレクトリはroot権限がないと、移動やインストールが出来ないため、「sudo」コマンドを入力します。
パスワードを求められるのでパスワードも入力します。
3 展開します。 端末で以下のコマンドを入力します。
cd /usr/lib/jvm sudo chmod +x ./jdk-6u26-linux-x64.bin sudo ./jdk-6u26-linux-x64.bin
入力後
Press Enter to continue.....が返ってきたらEnterキー押下。
Done.表示で展開成功。
4 展開するだけではインストールしたことにならないので環境変数を入力します。
/home/(ログインしている)ユーザー/.bashrc
をテキストエディタで開き、最下部に以下の値を入力します。
(/home/(ログインしている)ユーザー/.profileでも起動はするが一般的ではないっぽい。)
JAVA_HOME=/usr/lib/jvm/jdk1.6.0_26 PATH=$PATH:$JAVA_HOME/bin CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/tools.jar
入力したら保存して閉じます。
5 update-alternativesでJDKを切り替える。
と、ここまででいいはずなのですが、Ubuntuはupdate-alternativesによってOPEN JDKが標準javaとなるよう
指定されているので、これをSun JDKに切り替える必要があります。
端末で以下を入力します。
update-alternatives --display java
すると、
java - 自動モード リンクは現在 /usr/lib/jvm/java-6-openjdk/jre/bin/java を指しています /usr/lib/jvm/java-6-openjdk/jre/bin/java - 優先度 1061 スレーブ java.1.gz: /usr/lib/jvm/java-6-openjdk/jre/man/man1/java.1.gz 現在の '最適' バージョンは '/usr/lib/jvm/java-6-openjdk/jre/bin/java' です。
が表示されます。
update-alternativesの詳細自体はここでは詳しく述べませんが、
ようするにjavaというグループにjava-6-openjdkが紐づけられているということです。
javaにはいくつJDKが紐づけられているか確認するため、以下を端末で入力してみました。
update-alternatives --config java
すると、以下が返ってきました。
リンクグループ java に 1 つの alternative のみがあります: /usr/lib/jvm/java-6-openjdk/jre/bin/java 設定は行いません。
端末で以下を入力し、SunJDKを登録します。
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.6.0_26/bin/java 16026
端末で以下を入力し、SunJDKを設定します。
update-alternatives --config java
すると、以下のコメントが返ってきます。
alternative java (/usr/bin/java を提供) には 2 個の選択肢があります。 選択肢 パス 優先度 状態 ------------------------------------------------------------ * 0 /usr/lib/jvm/jdk1.6.0_26/bin/java 16026 自動モード 1 /usr/lib/jvm/java-6-openjdk/jre/bin/java 1061 手動モード 2 /usr/lib/jvm/jdk1.6.0_26/bin/java 16026 手動モード 現在の選択 [*] を保持するには Enter、さもなければ選択肢の番号のキーを押してください:
SunのJDKが選択されていたので、Enterキーを押下しました。
端末で以下を入力し、確認。
update-alternatives --display java
すると以下のメントを表示します。
/usr/lib/jvm/jdk1.6.0_26/bin/java - 優先度 16026 現在の '最適' バージョンは '/usr/lib/jvm/jdk1.6.0_26/bin/java' です。
端末で以下を入力
java -version
以下を表示したことにより、sunのjavaがインストールされていることを確認しました。
java version "1.6.0_26" Java(TM) SE Runtime Environment (build 1.6.0_26-b03) Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02, mixed mode)
と、ここまでならいいのですが、FireFoxを起動して、javaのバージョンを確認するとOpen JDKのバージョン 1.6.22を表示します。
これもSun JDKに設定を変えてみました。
Original Posted 平成23(2011)/6/20
投稿日:平成25(2013)/7/1