OpenJDK9をソースコードからビルドしてみたので、その手順をメモ。
環境
version | |
---|---|
OS | Ubuntu 15.04 (kernel 3.19.0-39-generic) x86_64 |
jdk | 9-internal (build 9-internal+0-2015-12-15-112158.vagrant.OpenJDK9) |
OpenJDK9のビルド
OpenJDKのjdk9リポジトリからmercurialでソースコードを取得し、ビルドする。
なおコードベースにはjavaファイルが含まれているため、そのビルド用にaptからOpenJDK8のバイナリをインストールしておく。
$ sudo apt-get update
$ sudo apt-get upgrade -y
$ sudo apt-get install build-essential -y
$ sudo apt-get install libx11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev -y
$ sudo apt-get install libasound2-dev libfreetype6-dev libcups2-dev -y
$ sudo apt-get install zip unzip mercurial -y
$ sudo apt-get install openjdk-8-jdk -y
$ unset JAVA_HOME
$ export LANG=C
$ export PATH="/usr/lib/jvm/java-8-openjdk-amd64/bin:${PATH}"
$ hg clone http://hg.openjdk.java.net/jdk9/jdk9 OpenJDK9
$ cd OpenJDK9/
OpenJDK9$ sh ./get_source.sh
OpenJDK9$ sh ./configure
OpenJDK9$ make all
ネットワーク状況とビルドマシンのスペックによるが、ソースコード取得とビルドには数十分という単位ではなく、数時間という単位で時間がかかるので注意。
ビルド時に遭遇したエラー1
sh ./get_source.sh
の最中に下記のようなメッセージが表示されていた場合、ソースコード取得に失敗している(ネットワーク環境が良くないと、転送途中でセッションがタイムアウトしてabortするるようだ)。
この場合、全てのリポジトリが正常に取得できるまで、sh ./get_source.sh
を繰り返せば良い。
jdk: abort: stream ended unexpectedly (got 9616 bytes, expected 12490)
WARNING: jdk exited abnormally (255)
ビルド時に遭遇したエラー2
今回はVagrantで起動した仮想マシン上でビルドをしていたが、メモリ不足でビルド途中でコケた。Vagrantはデフォルトで480MB程度しかメモリを割り当てないので、2GBぐらいメモリを与えたほうが良い。
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 25473024 bytes for committing reserved memory.
ビルド結果
ビルドに成功すると、OpenJDK9/build/linux-x86_64-normal-server-release/images/
以下にjdkやjreのディレクトリが作成されている。生成されたjdkディレクトリをJAVA_HOMEに指定すれば、生成されたjavaやjavacを利用することができる。
$ export JAVA_HOME=/home/vagrant/OpenJDK9/build/linux-x86_64-normal-server-release/images/jdk
$ export PATH=$JAVA_HOME/bin:${PATH}
$ java -version
openjdk version "9-internal"
OpenJDK Runtime Environment (build 9-internal+0-2015-12-15-112158.vagrant.OpenJDK9)
OpenJDK 64-Bit Server VM (build 9-internal+0-2015-12-15-112158.vagrant.OpenJDK9, mixed mode)