ホームページ Java &#&チュートリアル Linux 上で Java JDK をインストールおよび管理するための推奨される方法

Linux 上で Java JDK をインストールおよび管理するための推奨される方法

Oct 31, 2024 am 05:09 AM

The preferred way to install and manage Java JDKs on Linux

私は Fedora Workstation 40 を使用していますが、同様の手順は Ubuntu/Mint などのほとんどの主要な Linux ディストリビューションでも機能します

既存の Java インストールを確認する

一部の Linux ディストリビューションでは、Java がデフォルトでインストールされます。ただし、これは単なる JRE であり、JDK ではありません。 java コマンドは見つかっても、javac コマンドが見つからないため、これを確認できます。

java  # would show manual of arguments
javac # would give not found error if JDK not installed
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
java --version  # OR "java -version" for older java
javac --version
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

JDK、JRE、JVM の違いについては、次の記事を参照してください。

  • Java プログラミング環境と Java ランタイム環境 (JRE)
  • Java の JDK、JRE、JVM、JIT とは何ですか?

Fedora では、JRE/JDK は /usr/lib/jvm 内に保存されます。したがって、その内容を調べたり、次のようにクエリしたりできます。

find /usr/lib/jvm -name java
find /usr/lib/jvm -name javac
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

OpenJDK のインストール

私は Fedora 40 を使用していますが、パッケージ マネージャーは dnf です。それぞれの Linux ディストリビューションのパッケージ マネージャー (Ubuntu/Debian の apt など) を介して目的の OpenJDK をインストールします。

  • インストールできる利用可能な JDK を検索します:
  dnf search jdk
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

さまざまな Java バージョンとパッケージ内のバリアント サフィックスを含む、インストール可能なパッケージのリストが表示されます。ヘッドレス バリアントには通常、JRE が含まれるだけです。 Java 開発に必要なすべてのツールを備えた完全な JDK をインストールするには、通常、dnf の名前に -devel という用語サフィックスが含まれる、パッケージの開発バリアントが必要です。以下は、dnf 出力からの Java 17 OpenJDK のいくつかのパッケージ バリアント名のリストです:

  java-17-openjdk.x86_64 : OpenJDK 17 Runtime Environment
  java-17-openjdk-devel.x86_64 : OpenJDK 17 Development Environment
  java-17-openjdk-devel-fastdebug.x86_64 : OpenJDK 17 Development Environment optimised with full debugging on
  java-17-openjdk-devel-slowdebug.x86_64 : OpenJDK 17 Development Environment unoptimised with full debugging on
  java-17-openjdk-fastdebug.x86_64 : OpenJDK 17 Runtime Environment optimised with full debugging on
  java-17-openjdk-headless.x86_64 : OpenJDK 17 Headless Runtime Environment
  java-17-openjdk-headless-fastdebug.x86_64 : OpenJDK 17 Runtime Environment optimised with full debugging on
  java-17-openjdk-headless-slowdebug.x86_64 : OpenJDK 17 Runtime Environment unoptimised with full debugging on
  java-17-openjdk-javadoc.x86_64 : OpenJDK 17 API documentation
  java-17-openjdk-portable.x86_64 : OpenJDK 17 Runtime Environment portable edition
  java-17-openjdk-portable-devel.x86_64 : OpenJDK 17 Development Environment portable edition
  java-17-openjdk-portable-sources.x86_64 : OpenJDK 17 full patched sources of portable JDK
  java-17-openjdk-slowdebug.x86_64 : OpenJDK 17 Runtime Environment unoptimised with full debugging on
  java-17-openjdk-src.x86_64 : OpenJDK 17 Source Bundle
  java-17-openjdk-src-fastdebug.x86_64 : OpenJDK 17 Source Bundle for packages with debugging on and optimisation
  java-17-openjdk-src-slowdebug.x86_64 : OpenJDK 17 Source Bundle for packages with debugging on and no optimisation
ログイン後にコピー
ログイン後にコピー

Ubuntu ではパッケージが少なく、インストールするパッケージは通常、JDK ツールセット全体に対して openjdk-17-jdk のような名前が付けられます

  • そのリストから目的の OpenJDK パッケージをインストールします
  # Installing the latest OpenJDK with optimized debugging
  sudo dnf install java-latest-openjdk-devel-fastdebug

  # Installing a specific version like OpenJDK 17
  sudo dnf install java-17-openjdk-devel
ログイン後にコピー
ログイン後にコピー
  • java および javac コマンドが見つかったことを確認してインストールを確認します

Oracle JDKのインストール

  • 公式 Oracle SE ダウンロード ページにアクセスしてください。必要な Java バージョンのダウンロード セクションを見つけます

  • お使いのプラットフォームに適切なパッケージをダウンロードします。 Fedora などの RedHat ベースの Linux ディストリビューションの場合は、.rpm パッケージ (Ubuntu/Debian の場合は .deb) をダウンロードします。ダウンロードする前に、Oracle にサインインし、条件に同意する必要があります

  • ダウンロードしたファイル (jdk-11.0.24_linux-x64_bin.rpm など) をダブルクリックし、[インストール] を選択します。 Oracle JDK をインストールして構成します。

  • OracleJDK がインストールされたので、java および javac コマンドが検出されることを確認します

IntelliJ 経由での JDK のインストール

IntelliJ 自体から JDK をインストールすることもできます:

  • 歯車アイコン ⚙️ をクリックして、プロジェクト構造に移動します。 SDKを選択し、プラスアイコンをクリックします。次に、ダウンロードしてインストールする JDK を選択します
  • JDK は ~/.jdks フォルダーにインストールされます (例: ~/.jdks/openjdk-20.0.2/)

IntelliJ は、システム上の利用可能な JDK の場所を自動検出します。プロジェクト構造の構成済み JDK の下に /usr/lib/jvm/jdk-11-oracle-x64 などの既存の JDK フォルダーの場所を追加することもできます


複数の Java インストールの操作

Linux の update-alternatives コマンド (Fedora では単に Alternatives とも呼ばれます) は、代替システムを構成する シンボリック リンク に関する情報を作成、削除、維持、および表示します

同じまたは類似の機能を果たす複数のプログラムを 1 つのシステムに同時にインストールすることができます。ファイルシステム内の総称名は、交換可能な機能を提供するすべてのファイルで共有されます。代替システムは、この一般名で参照される実際のファイルを判断するのに役立ちます。

役立つ参考文献:

    update-alternatives - Linux マンページ
  • Linux の代替コマンドの紹介 - RedHat
パッケージ マネージャー経由で OpenJDK をインストールするか、ダウンロードしたファイルから Oracle-JDK をインストールすると、そのプロセス中に代替ファイルが自動的に更新されるはずです

コマンドで使用可能なオプションを表示する

java  # would show manual of arguments
javac # would give not found error if JDK not installed
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
出力は次のようになります:


java --version  # OR "java -version" for older java
javac --version
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
同様に、javac の代替オプション リストを参照してください

コマンドの代替エントリの追加

コマンドの代替手段がリストに登録されていない場合は、次のように手動で追加できます。


find /usr/lib/jvm -name java
find /usr/lib/jvm -name javac
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
たとえば、IntelliJ 内から JetBrains Runtime (JCEF) JDK をダウンロードしました。これは ~/.jdks/jbrsdk_jcef-17.0.12/ フォルダーにダウンロードされました。しかし、それは代替リストには表示されませんでした。そこで、java と javac の代替エントリを次のように追加します。


  dnf search jdk
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
同様に、必要に応じて、jar、javadoc などのコマンドの代替手段を追加します

次のようにフォロワー リンクを追加することもできます。

--インストールリンク名パス優先度 [--フ​​ォロワーリンク名パス]... [--initscript サービス] [--フ​​ァミリー名]

使用可能なコマンドの代替手段の切り替え

存在する Java インストールの中から選択してください


  java-17-openjdk.x86_64 : OpenJDK 17 Runtime Environment
  java-17-openjdk-devel.x86_64 : OpenJDK 17 Development Environment
  java-17-openjdk-devel-fastdebug.x86_64 : OpenJDK 17 Development Environment optimised with full debugging on
  java-17-openjdk-devel-slowdebug.x86_64 : OpenJDK 17 Development Environment unoptimised with full debugging on
  java-17-openjdk-fastdebug.x86_64 : OpenJDK 17 Runtime Environment optimised with full debugging on
  java-17-openjdk-headless.x86_64 : OpenJDK 17 Headless Runtime Environment
  java-17-openjdk-headless-fastdebug.x86_64 : OpenJDK 17 Runtime Environment optimised with full debugging on
  java-17-openjdk-headless-slowdebug.x86_64 : OpenJDK 17 Runtime Environment unoptimised with full debugging on
  java-17-openjdk-javadoc.x86_64 : OpenJDK 17 API documentation
  java-17-openjdk-portable.x86_64 : OpenJDK 17 Runtime Environment portable edition
  java-17-openjdk-portable-devel.x86_64 : OpenJDK 17 Development Environment portable edition
  java-17-openjdk-portable-sources.x86_64 : OpenJDK 17 full patched sources of portable JDK
  java-17-openjdk-slowdebug.x86_64 : OpenJDK 17 Runtime Environment unoptimised with full debugging on
  java-17-openjdk-src.x86_64 : OpenJDK 17 Source Bundle
  java-17-openjdk-src-fastdebug.x86_64 : OpenJDK 17 Source Bundle for packages with debugging on and optimisation
  java-17-openjdk-src-slowdebug.x86_64 : OpenJDK 17 Source Bundle for packages with debugging on and no optimisation
ログイン後にコピー
ログイン後にコピー
出力は以下のようになります。 * は利用可能な最良のバージョンを示し、現在の選択を示します:


  # Installing the latest OpenJDK with optimized debugging
  sudo dnf install java-latest-openjdk-devel-fastdebug

  # Installing a specific version like OpenJDK 17
  sudo dnf install java-17-openjdk-devel
ログイン後にコピー
ログイン後にコピー
同様に、javac の代替オプションから選択します

JDK パッケージをアンインストール/削除するときは、それぞれの代替エントリも忘れずに削除してください

代替エントリの削除

たとえば、JCEF JDK の Java コマンド代替エントリを削除するには:

java  # would show manual of arguments
javac # would give not found error if JDK not installed
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

JavaをPATHに追加

Java インストール間の管理に update-alternatives メソッドに従っており、すべてのエントリが完了している場合、これは必要ありません

ただし、シェル プロファイルで構成を手動で設定するには、次のようにすることができます:

  • シェル構成ファイルで環境変数を設定します (つまり、~/.zshrc、~/.bashrc など)。
java --version  # OR "java -version" for older java
javac --version
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
  • シェルを再起動します:
find /usr/lib/jvm -name java
find /usr/lib/jvm -name javac
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
  • これで、Java が正常に検出されるはずです
  dnf search jdk
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

以上がLinux 上で Java JDK をインストールおよび管理するための推奨される方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

会社のセキュリティソフトウェアはアプリケーションの実行に失敗していますか?それをトラブルシューティングと解決する方法は? 会社のセキュリティソフトウェアはアプリケーションの実行に失敗していますか?それをトラブルシューティングと解決する方法は? Apr 19, 2025 pm 04:51 PM

一部のアプリケーションが適切に機能しないようにする会社のセキュリティソフトウェアのトラブルシューティングとソリューション。多くの企業は、内部ネットワークセキュリティを確保するためにセキュリティソフトウェアを展開します。 ...

MapsTructを使用したシステムドッキングのフィールドマッピングの問題を簡素化する方法は? MapsTructを使用したシステムドッキングのフィールドマッピングの問題を簡素化する方法は? Apr 19, 2025 pm 06:21 PM

システムドッキングでのフィールドマッピング処理は、システムドッキングを実行する際に難しい問題に遭遇することがよくあります。システムのインターフェイスフィールドを効果的にマッピングする方法A ...

エンティティクラス変数名をエレガントに取得して、データベースクエリ条件を構築する方法は? エンティティクラス変数名をエレガントに取得して、データベースクエリ条件を構築する方法は? Apr 19, 2025 pm 11:42 PM

データベース操作にMyBatis-Plusまたはその他のORMフレームワークを使用する場合、エンティティクラスの属性名に基づいてクエリ条件を構築する必要があることがよくあります。あなたが毎回手動で...

名前を数値に変換してソートを実装し、グループの一貫性を維持するにはどうすればよいですか? 名前を数値に変換してソートを実装し、グループの一貫性を維持するにはどうすればよいですか? Apr 19, 2025 pm 11:30 PM

多くのアプリケーションシナリオでソートを実装するために名前を数値に変換するソリューションでは、ユーザーはグループ、特に1つでソートする必要がある場合があります...

Intellijのアイデアは、ログを出力せずにSpring Bootプロジェクトのポート番号をどのように識別しますか? Intellijのアイデアは、ログを出力せずにSpring Bootプロジェクトのポート番号をどのように識別しますか? Apr 19, 2025 pm 11:45 PM

intellijideaultimatiateバージョンを使用してスプリングを開始します...

Javaオブジェクトを配列に安全に変換する方法は? Javaオブジェクトを配列に安全に変換する方法は? Apr 19, 2025 pm 11:33 PM

Javaオブジェクトと配列の変換:リスクの詳細な議論と鋳造タイプ変換の正しい方法多くのJava初心者は、オブジェクトのアレイへの変換に遭遇します...

eコマースプラットフォームSKUおよびSPUデータベースデザイン:ユーザー定義の属性と原因のない製品の両方を考慮する方法は? eコマースプラットフォームSKUおよびSPUデータベースデザイン:ユーザー定義の属性と原因のない製品の両方を考慮する方法は? Apr 19, 2025 pm 11:27 PM

eコマースプラットフォーム上のSKUおよびSPUテーブルの設計の詳細な説明この記事では、eコマースプラットフォームでのSKUとSPUのデータベース設計の問題、特にユーザー定義の販売を扱う方法について説明します。

データベースクエリにTKMYBATISを使用するときに、エンティティクラスの変数名の構築クエリ条件をエレガントに取得する方法は? データベースクエリにTKMYBATISを使用するときに、エンティティクラスの変数名の構築クエリ条件をエレガントに取得する方法は? Apr 19, 2025 pm 09:51 PM

データベースクエリにTKMYBATISを使用する場合、クエリ条件を構築するためにエンティティクラスの変数名を優雅に取得する方法は一般的な問題です。この記事はピン留めします...

See all articles