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/です)。
1 2 |
$ curl -O https://download.java.net/java/GA/jdk15/779bf45e88a44cbd9ea6621d33e33db1/36/GPL/openjdk-15_linux-x64_bin.tar.gz |
ハッシュ値の確認して解凍する
ハッシュ値を確認する
1 2 |
$ cd $HOME/example $ sha256sum openjdk-15_linux-x64_bin.tar.gz |
sha256ファイルの値と一致していればとりあえず改ざんやエラーはありません。
$ tar xvf openjdk-15_linux-x64_bin.tar.gz
jdk15という名前のディレクトリができました。
起動させてみよう
テキストエディタでhello.javaを作成する
1 2 3 4 5 6 |
public class Hello { public static void main(String[] args) { System.out.println("Hello, world."); } } |
1 2 |
$ jdk-15/bin/java hello.java Hello, world. |
Linuxシステムから参照できるようにする
1 2 3 |
$ export JAVA_HOME=$HOME/example/jdk-15 $ export PATH="$JAVA_HOME/bin:$PATH" |
JAVA_HOMEを保存する
1 2 |
$ java -version openjdk version "15" 2020-09-15 |
ここで指定した変数はシェルを閉じると消えるので、シェルを起動したら有効化したい場合は.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で標準にサポートされているか確認する
1 2 3 |
CentOSでは $ yum search openjdk-devel |
1 2 3 |
Ubuntuでは $ apt search openjdk-\(\.\)\+-jdk$ |
インストールする
1 2 3 |
CentOS では $ sudo yum install java-11-openjdk-devel |
1 2 |
Ubuntuでは $ sudo apt install openjdk-11-jdk |
外部のレポジトリからインストールする
OSの標準で入手したいSDKのバージョンがサポートされていない場合は外部のリポジトリを登録できます。ここではCentOS7.9とUbuntu18.04の例を書きます。インストールするJDKのバージョンはJDK15にします。外部のリポジトリが提供する最新の状態に自動的にアップデートの通知が来てコマンドでアップデートできます。外部リポジトリのサイトをいくつか紹介します。
Zulu:
AdoptOpenJDK:
Amazon Corretto:
Launchpad (Ubuntu):
コマンドを入力する
リポジトリを追加する
1 2 3 4 |
CentOSでは $ curl -O https://cdn.azul.com/zulu/bin/zulu-repo-1.0.0-1.noarch.rpm $ sudo rpm install zulu-repo-1.0.0-1.noarch.rpm $ sudo yum update |
1 2 3 4 |
Ubuntuでは $ sudo add-apt-repository ppa:openjdk-r/ppa $ sudo apt update |
インストールする(ここではJDK15をインストールします)
1 2 3 |
CentOSでは $ sudo yum install zulu15 |
1 2 |
Ubuntuでは $ sudo apt install openjdk-15-jdk |
rpm, debファイルからJDKをインストールする
rpm, deb形式のファイルをダウンロードする
1 |
$ curl -O (インストールするJDK.rpmもしくはdebファイル) |
インストールする
1 2 3 |
rpmでは $ sudo rpm -ivh (インストールするJDK.rpm) |
1 2 3 |
debでは $ sudo dpkg -i (インストールするJDK.deb) |
更新する
1 2 3 |
rpmでは $ sudo rpm -Uvh (インストール済みのJDK.rpm) |
1 2 |
debでは $ sudo dpkg -i (インストール済みのJDK.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コマンドを確認する
1 2 3 |
CentOSでは $ alternative --config (javaと javacコマンド) |
1 2 |
Ubuntuでは $ update-alternative --config (javaコマンド) |
パッケージ管理システムから入れても登録されていなかった場合手動もしくは先程の.jinfoファイルからコマンドを登録できるのですが、今回は二番目の方法でJDKを切り替えます。
JDKのバージョンを変更する
バージョンを変更する
1 2 3 4 |
CentOSでは $ sudo alternatives --config java #変えるJDKの番号を選択する $ sudo alternatives --config javac #変えるJDKの番号を選択する |
1 2 3 4 |
Ubuntuでは $ update-java-alternatives --list #切り替えできるバージョンを表示する $ sudo update-java-alternatives --set (切り替えるバージョン) |
JAVA_HOMEも使用するJDKの配置してあるPATHに切り替えてください。
環境変数のみを切り替える
二つ目の方法は簡単で、バイナリをダウンロードした時などに使います。コマンドのパスをこれから使うJDKにすることで変更できます。JDKは$HOME/example/下に格納されているとして .pofileまたは(.bash_profile)に下記のように定義するとPATHが/usr/binなどより優先されます。
1 2 3 4 |
export JAVA_HOME=$HOME/example/openjdk-バージョン・・#JDKのディレクトリ名 export PATH="$JAVA_HOME/bin:$PATH" # |
気になるところ
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をアンインストールします)
1 2 3 4 |
CentOSでは $ rpm -qf /usr/lib/jvm/java-8-openjdk・・#アンインストールするパッケージがjava-8-openjdk-・・であることがわかる $ yum search java-8-openjdk #他にもインストールされているパッケージを確認する |
1 2 3 |
Ubuntuでは $ dpkg -S /usr/lib/jvm/java-8-openjdk-amd64/bin/java #アンインストールするパッケージがopenjdk-8を含むことがわかる $ apt search openjdk-8 #他にもインストールされているパッケージを確認する |
yum, aptからインストールしたJDKをアンインストールする
-jdkもしくは -develだけではなく-jreや -jre-headlessなどのパッケージもアンインストールする。
1 2 3 4 |
CentOSでは $ sudo yum remove (アンインストールするパッケージ) $ sudo yum autoremove |
1 2 3 |
Ubuntuでは $ sudo apt remove (アンインストールするパッケージ) $ sudo apt autoremove |
もし削除したはずのバージョンが( update- )alternativesコマンドで候補に上がる場合は同バージョンでアンインストールされていないパッケージがないか確認してください。
rpm, dpkgからインストールしたJDKをアンインストールする
アンインストールするJDKの正確なパッケージ名を探す
1 2 3 |
rpmでは $ rpm -qa (*大体の名前*) |
1 2 3 |
debでは $ dpkg -l (*大体の名前*) |
アンインストールする。
1 2 3 |
rpmでは $ sudo rpm -e (アンインストールするパッケージ名) |
1 2 |
debでは $ sudo dpkg -r (アンインストールするパッケージ名) |
ダウウンロードしたJDKをアンインストールする
バイナリをダウンロードした場合はJAVA_HOMEとPATHを設定ファイルから消して、パッケージを削除すればアンインストール完了です。
最後に
ここではインストール作業周辺について説明してきました。これから様々なJavaの開発ツールを使用する際、設定ファイルがホームディレクトリの隠しファイルとして生成されることがあるので、そちらも把握しておいてください。
FEnetを運営しているネプラス株式会社はサービス開始から10年以上
『エンジニアの生涯価値の向上』をミッションに掲げ、
多くのインフラエンジニア・ネットワークエンジニアの就業を支援してきました。
ネプラス株式会社はこんな会社です
秋葉原オフィスにはネプラス株式会社をはじめグループのIT企業が集結!
数多くのエンジニアが集まります。

-
インフラ業界に特化
ネットワーク・サーバー・データベース等、ITインフラ業界に特化。Cisco Systemsプレミアパートナーをはじめ各種ベンダーのパートナー企業です。
業界を知り尽くしているからこそ大手の取引先企業、経験豊富なエンジニアに選ばれています。
-
正社員なのにフリーランスのような働き方
正社員の方でも希望を聞いたうえでプロジェクトをアサインさせていただいており、フリーランスのような働き方が可能。帰社日もありません。
プロジェクト終了後もすぐに次の案件をご紹介させていただきますのでご安心ください。
-
大手直取引の高額案件
案件のほとんどが大手SIerやエンドユーザーからの直取引のためエンジニアの皆様へに高く還元できています。
Ciscoをはじめ、Juniper、Azure、Linux、AWS等インフラに特化した常時300件以上の案件があります。
-
スキルアップ支援
不要なコストを削減し、その分エンジニアの方へのスキルアップ支援(ネットワーク機器貸出、合格時の受験費用支給など)や給与で還元しています。
受験費用例)CCNP,CCIE:6-20万円、JNCIS:3-4万円、AWS:1-3万円など
※業務に関連する一定の資格のみ。各種条件がありますので詳しくは担当者へにお尋ねください。
-
現給与を保証します!※
前職の給与保証しており、昨年度は100%の方が給与アップを実現。収入面の不安がある方でも安心して入社していただけます。
※適用にはインフラエンジニアの業務経験1年以上、等一定の条件がございます。
-
インセンティブ制度
ネットワーク機器の販売・レンタル事業等、売上に貢献いただいた方にはインセンティブをお支払いしています。
取引先企業とエンジニア側、双方にメリットがあり大変好評をいただいています。
-
社会保険・福利厚生
社員の方は、社会保険を完備。健康保険は業界内で最も評価の高い「関東ITソフトウェア健康保険組合」です。
さらに様々なサービスをお得に利用できるベネフィットステーションにも加入いただきます。
-
東証プライム上場企業グループ
ネプラスは東証プライム上場「株式会社夢真ビーネックスグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
ネプラス株式会社に興味を持った方へ
ネプラス株式会社では、インフラエンジニアを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。


Linux新着案件New Job
東京都中央区/【WEB面談可/インフラサーバ経験者/20~40代の方活躍中】/在宅ワーク
年収600万~600万円東京都中央区(小伝馬町駅)カー用品販売会社の情報システム運用/東京都千代田区/【WEB面談可/インフラサーバ経験者/20~40代の方活躍中】/テレワーク
年収576万~576万円東京都千代田区(水道橋駅)構築/東京都新宿区/【WEB面談可/インフラサーバ経験者/20~40代の方活躍中】/テレワーク
年収384万~384万円東京都新宿区(新宿駅)【高額年収】/ネットワークのセキュリティ機器の検証/東京都大田区/【WEB面談可】/在宅勤務/20代~40代の方活躍中
年収660万~660万円東京都大田区(蒲田駅)運用保守/Linux/東京都港区/【WEB面談可】/在宅勤務/20代~40代の方活躍中
年収600万~600万円東京都港区(新橋駅)【CCNA取得者歓迎】/海外モバイルネットワーク支援/Linux/東京都港区/【WEB面談可】/在宅勤務/20代~40代の方活躍中
年収624万~672万円東京都港区(三田駅)
人気記事Popular Posts
DNSエラーが起こる原因と解決方法5つ|パブリックDNSの設定方法
2020-04-23 2022-05-10DNSサーバーは応答していませんと表示される4つの原因|対処法とは?
2020-10-29 2022-05-10Linuxにおすすめのセキュリティソフト11選!主なウイルスの種類も紹介
2020-08-26 2022-04-26DNS_PROBE_FINISHED_NXDOMAINとは?対処法8つを紹介
2020-05-25 2022-04-26DNSサーバーを選ぶ基準5つ|おすすめのDNSプロバイダ4つもご紹介!
2020-09-24 2022-04-26SQL Server Express無償版3つの制限|各エディションの違い
2021-01-28 2022-04-26Linuxの使用に向いているおすすめのノートPC11選!様々な機種を紹介
2020-08-26 2022-04-27【軽量】おすすめのLinuxディストリビューション13選をご紹介します
2020-08-17 2022-04-27AWSの個人での使い途は?活用法3選と個人使用のメリットと注意点
2020-08-27 2022-04-26SSH接続とは?|SSH接続の仕方、パスワード認証と公開鍵認証について解説
2021-03-19 2022-04-25Linuxでログを調査する方法|syslogや/var/log/についても解説
2020-07-31 2022-05-17IPv4とIPv6の違い8つとは?IPv4 over IPv6についても解説
2020-10-29 2022-04-26