Fedora 17には、OpenJDK 1.7.0が標準搭載されています。Fedora 17のアップデートをすると、現時点ではUpdate9が入ります。
ただし、Oracle JDKと違ってJavaFXは含まれていないので、JavaFXアプリケーションを作成するには、Oracle JDKを入れる必要があります。
そこで、Fedora 17に、Oracle JDK7 u9をインストールし、合わせてNetBeans 7.3 beta2をインストールし、パス設定、フォント設定をします。
OpenJDK 1.7.0について
Fedora 17に標準搭載されているOpenJDK 1.7.0のRPMパッケージとバージョン詳細情報は次のようになっています。
~$ rpm -qa|grep openjdk java-1.7.0-openjdk-devel-1.7.0.9-2.3.3.fc17.1.x86_64 java-1.7.0-openjdk-1.7.0.9-2.3.3.fc17.1.x86_64 ~$ java -version java version "1.7.0_09-icedtea" OpenJDK Runtime Environment (fedora-2.3.3.fc17.1-x86_64) OpenJDK 64-Bit Server VM (build 23.2-b09, mixed mode)
OpenJDKのインストール先は、
になります。
Oracle JDK7のインストール
Oracleのサイトから、Java SE Downloadsページ(次のURL)に行き、Oracle JDKをダウンロードします。RPM形式が提供されているので、こちらを利用します。
ダウンロードするファイルは次です(64bit版のとき)。
インストールは次のディレクトリに行われます。
/usr/java +-- jdk1.7.0_09 | +-- bin | +-- jre | | +-- lib | +-- lib : : +-- default --> latestへのシンボリックリンク +-- latest --> jdk1.7.0_09へのシンボリックリンク
OpenJDKとOracle JDKの切り替え
OpenJDKがインストールされていると、/usr/bin/の下にjava, javacなどのコマンドがシンボリックリンクとして生成されます。これは、alternativesという機能を使って制御されるもので、例えば、javaコマンドについては次のような設定になっています。
そこで、Oracle JDKをインストール後、OpenJDKではなくOracle JDKを動かすようにするには、次の3つが考えられます。
1.は、CentOSの標準パッケージでOpenJDKに依存しているものがあるとアンインストールできないので、実現性は厳しいと思われます。
2.は、比較的制御が容易ですが、ユーザーごとに環境変数設定をすると漏れるケースがあり、問題発生時の切り分けが手間になりそうです。
3.は、alternativesの動作・設定を理解する必要がありますが、一番素直な方法です。
alternativesでOracle JDK用の設定をしてみる
alternativesについては、以前本日記で取り上げたことがあります。
まずは、Oracle JDKに含まれる実行コマンドをalternativesに設定します。alternativesの設定・使い方は以前の日記を参照いただくとして、以下のスクリプトにOracle JDK7u9用のalternatvie設定を記述しました。
#!/bin/bash # # Setting alternatives for Oracle JDK7u9 # JAVA_BASE=/usr/java/jdk1.7.0_09 JDK_BIN=$JAVA_BASE/bin JRE_BIN=$JAVA_BASE/jre/bin # check root permission if [[ $EUID -ne 0 ]]; then echo "This script must be run as root" 1>&2 exit 1 fi alternatives --install /usr/bin/java java /usr/java/jdk1.7.0_09/bin/java 170091 \ --slave /usr/bin/keytool keytool $JRE_BIN/keytool \ --slave /usr/bin/orbd orbd $JRE_BIN/orbd \ --slave /usr/bin/pack200 pack200 $JRE_BIN/pack200 \ --slave /usr/bin/rmid rmid $JRE_BIN/rmid \ --slave /usr/bin/rmiregistry rmiregistry $JRE_BIN/rmiregistry \ --slave /usr/bin/servertool servertool $JRE_BIN/servertool \ --slave /usr/bin/tnameserv tnameserv $JRE_BIN/tnameserve \ --slave /usr/bin/unpack200 unpack200 $JRE_BIN/unpack200 alternatives --install /usr/bin/javac javac /usr/java/jdk1.7.0_09/bin/javac 170091 \ --slave /usr/bin/appletviewer appletviewer $JDK_BIN/appletviewer \ --slave /usr/bin/apt apt $JDK_BIN/apt \ --slave /usr/bin/extcheck extcheck $JDK_BIN/extcheck \ --slave /usr/bin/idlj idlj $JDK_BIN/idlj \ --slave /usr/bin/jar jar $JDK_BIN/jar \ --slave /usr/bin/jarsigner jarsigner $JDK_BIN/jarsigner \ --slave /usr/bin/javadoc javadoc $JDK_BIN/javadoc \ --slave /usr/bin/javafxpackager javafxpackager $JDK_BIN/javafxpackager \ --slave /usr/bin/javah javah $JDK_BIN/javah \ --slave /usr/bin/javap javap $JDK_BIN/javap \ --slave /usr/bin/javaws javaws $JDK_BIN/javaws \ --slave /usr/bin/jcmd jcmd $JDK_BIN/jcmd \ --slave /usr/bin/jconsole jconsole $JDK_BIN/jconsole \ --slave /usr/bin/jcontrol jcontrol $JDK_BIN/jcontrol \ --slave /usr/bin/jdb jdb $JDK_BIN/jdb \ --slave /usr/bin/jhat jhat $JDK_BIN/jhat \ --slave /usr/bin/jinfo jinfo $JDK_BIN/jinfo \ --slave /usr/bin/jmap jmap $JDK_BIN/jmap \ --slave /usr/bin/jps jps $JDK_BIN/jps \ --slave /usr/bin/jrunscript jrunscript $JDK_BIN/jrunscript \ --slave /usr/bin/jsadebugd jsadebugd $JDK_BIN/jsadebugd \ --slave /usr/bin/jstack jstack $JDK_BIN/jstack \ --slave /usr/bin/jstat jstat $JDK_BIN/jstat \ --slave /usr/bin/jstatd jstatd $JDK_BIN/jstatd \ --slave /usr/bin/jvisualvm jvisualvm $JDK_BIN/jvisualvm \ --slave /usr/bin/native2ascii native2ascii $JDK_BIN/native2ascii \ --slave /usr/bin/policytool policytool $JDK_BIN/policytool \ --slave /usr/bin/rmic rmic $JDK_BIN/rmic \ --slave /usr/bin/schemagen schemagen $JDK_BIN/schemagen \ --slave /usr/bin/serialver serialver $JDK_BIN/serialver \ --slave /usr/bin/servertool servertool $JDK_BIN/servertool \ --slave /usr/bin/wsgen wsgen $JDK_BIN/wsgen \ --slave /usr/bin/wsimport wsimport $JDK_BIN/wsimport \ --slave /usr/bin/xjc xjc $JDK_BIN/xjc
alternativesの優先度は、OpenJDKが17009なのでこれより大きな数値となるよう、170091としました。これなら、CentOSをupdateした際にOpenJDKのアップデートが増えて、OpenJDK側の優先度が17010となってもOracle JDKの方が高いままとなります。
このスクリプトを実行後、alternatviesの設定は次のようになります。
~$ alternatives --display java java -ステータスは自動です。 リンクは現在 /usr/java/jdk1.7.0_09/bin/java を指しています。 /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java - 優先項目 17009 :(略) ~$
また、manコマンドでOracle JDKのコマンドの使い方を見ることができるよう、~/.bash_profileなどにMANPATHを設定しておきます。
export MANPATH=$MANPATH:/usr/java/latest/man
(2013-12-10追記)Oracle JDK用のalternatives設定スクリプトをGistにアップしました。パスを/usr/java/latestに設定し優先度を200000にしたので、JDKをアップデートしてもalternativesは有効です。
https://gist.github.com/torutk/7882424
フォント設定
試行錯誤中