Help us understand the problem. What is going on with this article?

OpenJDK9のビルド

More than 3 years have passed since last update.

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のバイナリをインストールしておく。

OpenJDK9インストール
$ 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)
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした