Maison > Java > javaDidacticiel > La méthode privilégiée pour installer et gérer les JDK Java sous Linux

La méthode privilégiée pour installer et gérer les JDK Java sous Linux

Patricia Arquette
Libérer: 2024-10-31 05:09:30
original
413 Les gens l'ont consulté

The preferred way to install and manage Java JDKs on Linux

Je suis sur Fedora Workstation 40, mais des étapes similaires fonctionneraient sur la plupart des principales distributions Linux comme Ubuntu/Mint, etc.

Vérifier l'installation Java existante

Sur certaines distributions Linux, Java est installé par défaut ; cependant il s'agit juste du JRE et non du JDK. Vous pouvez le vérifier car la commande java est trouvée mais la commande javac n'est PAS trouvée.

java  # would show manual of arguments
javac # would give not found error if JDK not installed
Copier après la connexion
Copier après la connexion
Copier après la connexion
java --version  # OR "java -version" for older java
javac --version
Copier après la connexion
Copier après la connexion
Copier après la connexion

Référez-vous à ces articles pour connaître les différences entre JDK, JRE et JVM :

  • Environnement de programmation Java et environnement d'exécution Java (JRE)
  • Que sont JDK, JRE, JVM et JIT en Java ?

Dans Fedora, les JRE/JDK sont stockés dans /usr/lib/jvm. Vous pouvez donc consulter son contenu ou l'interroger comme :

find /usr/lib/jvm -name java
find /usr/lib/jvm -name javac
Copier après la connexion
Copier après la connexion
Copier après la connexion

Installer un OpenJDK

Je suis sur Fedora 40 où le gestionnaire de paquets est dnf. Vous installeriez l'OpenJDK de votre choix via le gestionnaire de paquets de votre distribution Linux respective (comme apt pour Ubuntu/Debian) :

  • Recherchez les JDK disponibles à installer :
  dnf search jdk
Copier après la connexion
Copier après la connexion
Copier après la connexion

Vous obtiendrez une liste des packages disponibles à installer ayant différentes versions Java ainsi que le suffixe de variante dans le package. Les variantes sans tête incluent généralement simplement le JRE. Pour installer le JDK complet avec tous les outils nécessaires au développement Java, nous avons besoin de la variante de développement du package, contenant généralement le suffixe du terme -devel dans le nom de dnf. Voici une liste de quelques noms de variantes de packages pour Java 17 OpenJDK à partir de la sortie dnf :

  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
Copier après la connexion
Copier après la connexion

Sur Ubuntu, il existe des packages de moindre importance et celui que vous souhaitez installer s'appelle généralement openjdk-17-jdk pour l'ensemble des outils JDK

  • Installez le package OpenJDK souhaité à partir de cette liste
  # 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
Copier après la connexion
Copier après la connexion
  • Vérifiez l'installation en vérifiant que les commandes java et javac sont trouvées

Installation d'un JDK Oracle

  • Visitez la page de téléchargement officielle d'Oracle SE. Localisez la section de téléchargement de la version Java requise

  • Téléchargez le package approprié pour votre plateforme. Pour les distributions Linux basées sur RedHat comme Fedora, téléchargez le package .rpm (et .deb pour Ubuntu/Debian). Avant de télécharger, vous devrez vous connecter à Oracle et accepter les conditions

  • Double-cliquez sur le fichier téléchargé (comme jdk-11.0.24_linux-x64_bin.rpm) et sélectionnez Installer. Il installera et configurera le JDK Oracle.

  • Maintenant qu'OracleJDK est installé, vérifiez les commandes java et javac détectées

Installer des JDK via IntelliJ

Vous pouvez également installer des JDK depuis IntelliJ lui-même :

  • Cliquez sur l'icône Gear ⚙️ puis allez dans Structure du projet. Sélectionnez les SDK, cliquez sur l'icône plus. Sélectionnez ensuite le JDK que vous souhaitez télécharger et installer
  • Le JDK est installé dans le dossier ~/.jdks, par exemple : ~/.jdks/openjdk-20.0.2/

IntelliJ détecte automatiquement vos emplacements JDK disponibles sur votre système. Vous pouvez également ajouter les emplacements de vos dossiers JDK existants tels que /usr/lib/jvm/jdk-11-oracle-x64 sous les JDK configurés dans la structure du projet


Travailler avec plusieurs installations Java

La commande update-alternatives sous Linux (également appelée simplement alternatives dans Fedora) crée, supprime, maintient et affiche des informations sur les liens symboliques comprenant le système d'alternatives.

Il est possible que plusieurs programmes remplissant des fonctions identiques ou similaires soient installés simultanément sur un même système. Un nom générique dans le système de fichiers est partagé par tous les fichiers offrant des fonctionnalités interchangeables. Le système d'alternatives permet de déterminer quel fichier réel est référencé par ce nom générique.

Références utiles :

  • alternatives de mise à jour - page de manuel Linux
  • Introduction à la commande alternatives sous Linux - RedHat

Lorsque vous installez OpenJDK via votre gestionnaire de packages ou Oracle-JDK à partir du fichier téléchargé, les alternatives devraient automatiquement être mises à jour au cours de ce processus

Afficher les options disponibles pour une commande

java  # would show manual of arguments
javac # would give not found error if JDK not installed
Copier après la connexion
Copier après la connexion
Copier après la connexion

Le résultat ressemblerait à :

java --version  # OR "java -version" for older java
javac --version
Copier après la connexion
Copier après la connexion
Copier après la connexion

De même, consultez la liste des options alternatives pour javac

Ajout d'une entrée alternative pour une commande

Si une alternative à vos commandes n'est PAS enregistrée dans la liste, vous pouvez les ajouter manuellement comme :

find /usr/lib/jvm -name java
find /usr/lib/jvm -name javac
Copier après la connexion
Copier après la connexion
Copier après la connexion

Par exemple, j'ai téléchargé le JDK JetBrains Runtime (JCEF) depuis IntelliJ, qui a été téléchargé dans le dossier ~/.jdks/jbrsdk_jcef-17.0.12/ ; mais il n'apparaissait pas dans la liste des alternatives. Je vais donc ajouter l'entrée alternative pour java et javac comme :

  dnf search jdk
Copier après la connexion
Copier après la connexion
Copier après la connexion

De même, ajoutez des alternatives pour plus de commandes comme jar, javadoc, etc. selon les besoins

Vous pouvez également ajouter des liens d'abonnés comme :

--priorité du chemin du nom du lien d'installation [--chemin du nom du lien suiveur]... [--initscript service] [--nom de la famille]

Basculer entre les alternatives disponibles d'une commande

Choisissez entre les installations Java présentes

  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
Copier après la connexion
Copier après la connexion

Le résultat ressemblerait à ci-dessous. Notez que * désigne la meilleure version disponible et indique votre sélection actuelle :

  # 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
Copier après la connexion
Copier après la connexion

De même, choisissez parmi les options alternatives pour javac

Lorsque vous désinstallez/supprimez vos packages JDK, n'oubliez pas de supprimer également les entrées alternatives respectives

Supprimer une entrée alternative

Par exemple, pour supprimer l'entrée alternative de la commande java du JCEF JDK :

java  # would show manual of arguments
javac # would give not found error if JDK not installed
Copier après la connexion
Copier après la connexion
Copier après la connexion

Ajouter Java au CHEMIN

Cela ne devrait pas être nécessaire si vous suivez la méthode des alternatives de mise à jour pour gérer entre les installations Java et que toutes les entrées sont complètes

Cependant, pour définir manuellement la configuration dans votre profil shell, vous pouvez procéder comme ci-dessous :

  • Définissez les variables d'environnement dans votre fichier de configuration Shell (c'est-à-dire ~/.zshrc, ~/.bashrc etc.)
java --version  # OR "java -version" for older java
javac --version
Copier après la connexion
Copier après la connexion
Copier après la connexion
  • Redémarrer SHELL :
find /usr/lib/jvm -name java
find /usr/lib/jvm -name javac
Copier après la connexion
Copier après la connexion
Copier après la connexion
  • Maintenant, Java devrait être détecté avec succès
  dnf search jdk
Copier après la connexion
Copier après la connexion
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal