LinuxにJavaをインストールする方法|アンインストールする方法まで詳しく解説

LinuxにJavaをインストールする方法|アンインストールする方法まで詳しく解説
基本情報技術者試験の試験対策はこちら>>

LinuxにJavaをインストールする方法


この記事はLinuxでJavaの開発環境(JDK)をインストールしたい方に簡単なJavaの環境構築方法を解説していきます。なおOpenJDKではJava11から実行環境(JRE)単体の配布は廃止されました。
詳しくはこちらを参考にしてください。yumやaptなどLinuxの標準で提供するパッケージではJRE単体でインストールすることもできます。

Javaで動作する言語や統合開発環境を使用する方へ

Scala(sbt),Groovy,Kotlinなどの他のJavaを使用する言語や統合開発環境では各ドキュメントにJavaの開発環境(JDK)のインストール手順を記載していますのでそちらもお読みください。

Java,Kotlinなどは統合開発環境を使用しての開発が一般的です。NetBeans ,Intellij , Android Studioでは予めJDK(もしくはその互換)が同梱されています。

JDK(Java Development Kit)とは

LinuxでJavaの開発をするためにJDK(Java Development Kit)をインストールします。JDKはJava SE(Javaの標準的なAPI)やJava仮想マシンなどのJavaの実行環境に加え開発に必要なコンパイラやデバッガなどアプリケーションの開発に必要もしくは有用なツールを含んだソフトウェア開発キット(SDK)です。

OpenJDKとは

JDKは実装が複数ありますが、 Oracle社の提供するJDKとオープンソースのOpenJDKが一般的です。ここではOpenJDKについて解説します。

以下の説明コードではCPUx64のマシンでCentOS7とUbuntu18.04上でyumコマンドとaptコマンドを例に使います。DNFなど別のコマンドを使用している場合は対応するコマンドを確認してください。

公式サイトからバイナリをダウンロードする

公式サイトから入手したいバージョンのJavaをダウンロードします。適当な場所にLinux向けの圧縮されたJDKをダウンロードします(ここでは現在の最新版OpenJDK15 で場所は$HOME/example/です)。

ハッシュ値の確認して解凍する

ハッシュ値を確認する

sha256ファイルの値と一致していればとりあえず改ざんやエラーはありません。
$ tar xvf openjdk-15_linux-x64_bin.tar.gz
jdk15という名前のディレクトリができました。

起動させてみよう

テキストエディタでhello.javaを作成する

Linuxシステムから参照できるようにする

JAVA_HOMEを保存する

ここで指定した変数はシェルを閉じると消えるので、シェルを起動したら有効化したい場合は.bashrcに、ログインした時点で有効化するには.profile、または(.bash_profile)などに記述してください。

シェルを介さずLinuxから利用する場合はログインした時点で有効になっている必要があります。複数のJDKをLinuxで管理する方法は後述します。

JAVA_HOMEとは

次から説明するパッケージ管理システムからインストールする場合もプログラムからJAVA_HOMEが参照されることがあるので、JAVA_HOMEを実際にJDKの配置されているディレクトリ
(例/usr/lib/jvm/openjdk-バージョン・)に指定して.profileまたは(bash_profile)に定義してください。

JAVA_HOMEは同時に一つしか定義されません。使用するJDKのバージョンに合わせて定義してください。

OS標準のレポジトリからインストールする

使用したいバージョンがLinuxで標準でサポートされている場合、パッケージ管理システムで簡単にインストールできます。ここでは最新の長期サポート(LTS)JDK-11を例にして書いてみます。

パッケージ管理システムからインストールするとこのバージョンのバグなどの不具合を修正した最新バージョンに自動的にアップデートの通知が来てコマンドでアップデートすることができます。

コマンドを入力する

インストールするバージョンのJDKがLinuxで標準にサポートされているか確認する

インストールする

外部のレポジトリからインストールする

OSの標準で入手したいSDKのバージョンがサポートされていない場合は外部のリポジトリを登録できます。ここではCentOS7.9とUbuntu18.04の例を書きます。インストールするJDKのバージョンはJDK15にします。外部のリポジトリが提供する最新の状態に自動的にアップデートの通知が来てコマンドでアップデートできます。外部リポジトリのサイトをいくつか紹介します。

Zulu:
AdoptOpenJDK:
Amazon Corretto:
Launchpad (Ubuntu):

コマンドを入力する

リポジトリを追加する

インストールする(ここではJDK15をインストールします)

rpm, debファイルからJDKをインストールする

rpm, deb形式のファイルをダウンロードする

インストールする

更新する

Linuxの設定方法

まずLinuxの環境変数でJavaプログラムを起動する際に参照される変数を紹介します。
JAVA_HOMEまたはJDK_HOMEは、JAVAで書かれたアプリケーションから参照されることがある実際のJDKの配置されているディレクトリです。環境変数PATHにその配下のbinを追加します。

CLASSPATH変数はJavaの実行時にロードされるクラスやjarファイルなどを指定します。実行時にコマンドから指定することもできます。外部ライブラリの読み込みなどで使用されます。

複数のJDKを管理する

パッケージ管理ツールからインストールされたJDKのコマンドは/usr/bin/から/etc/alternative/へリンクされここで最終的に/usr/lib/jvm内に存在するバージョンごとの/binなどに存在する実行形式ファイルへとリンクされます。

/usr/lib/jvm直下の(.java・バージョン・.jinfo)ファイルに/usr/binに繋がる実行ファイルの一覧が定義されています。

JDKを切り替える一つ目の方法は/etc/alternativeのリンク先を変えることです。コマンドを入力した時LinuxにどのJDKのバージョンの実行ファイルが実行されるかを確認してみます。

Linuxに登録されているJavaコマンドを確認する

パッケージ管理システム経由でインストールすると大抵は新しくインストールしたJavaのコマンドがLinuxに登録されています。

パッケージ管理システムから入れても登録されていなかった場合手動もしくは先程の.jinfoファイルからコマンドを登録できるのですが、今回は二番目の方法でJDKを切り替えます。

JDKのバージョンを変更する

バージョンを変更する

JAVA_HOMEも使用するJDKの配置してあるPATHに切り替えてください。

環境変数のみを切り替える

二つ目の方法は簡単で、バイナリをダウンロードした時などに使います。コマンドのパスをこれから使うJDKにすることで変更できます。JDKは$HOME/example/下に格納されているとして .pofileまたは(.bash_profile)に下記のように定義するとPATHが/usr/binなどより優先されます。

気になるところ

RED HATの公式のドキュメントには書かれていませんが、パッケージ管理システムでインストールした場合JDK/lib配下にある実行ファイルjexecも /usr/binにリンクされていることがあるのでもしjexecコマンドが存在したら、export PATH=”$JAVA_HOME/lib:$PATH” も.profileまたは(.bash_profile)に加えた方が良いでしょう。

アンインストールする

アンインストールするパッケージを確認します。ディレクトリ名とパッケージ名は大抵異なります。( update- )alternativesコマンドで表示される実行ファイルのフルパスからファイルの属するパッケージ名を特定します。

またアンインストール後はJAVA_HOMEの値からアンインストールしたJDKへのパスを外してください。

yum, aptからインストールしたパッケージを特定する

(ここではJDK8をアンインストールします)

yum, aptからインストールしたJDKをアンインストールする

-jdkもしくは -develだけではなく-jreや -jre-headlessなどのパッケージもアンインストールする。

もし削除したはずのバージョンが( update- )alternativesコマンドで候補に上がる場合は同バージョンでアンインストールされていないパッケージがないか確認してください。

rpm, dpkgからインストールしたJDKをアンインストールする

アンインストールするJDKの正確なパッケージ名を探す

アンインストールする。

ダウウンロードしたJDKをアンインストールする

バイナリをダウンロードした場合はJAVA_HOMEとPATHを設定ファイルから消して、パッケージを削除すればアンインストール完了です。

最後に

ここではインストール作業周辺について説明してきました。これから様々なJavaの開発ツールを使用する際、設定ファイルがホームディレクトリの隠しファイルとして生成されることがあるので、そちらも把握しておいてください。

インフラエンジニア専門の転職サイト「FEnetインフラ」

FEnetインフラはサービス開始から10年以上『エンジニアの生涯価値の向上』をミッションに掲げ、多くのエンジニアの就業を支援してきました。

転職をお考えの方は気軽にご登録・ご相談ください。