Heim > Java > javaLernprogramm > Hauptteil

Die bevorzugte Methode zum Installieren und Verwalten von Java JDKs unter Linux

Patricia Arquette
Freigeben: 2024-10-31 05:09:30
Original
281 Leute haben es durchsucht

The preferred way to install and manage Java JDKs on Linux

Ich verwende Fedora Workstation 40, aber ähnliche Schritte würden auf den meisten großen Linux-Distributionen wie Ubuntu/Mint usw. funktionieren

Überprüfen Sie die vorhandene Java-Installation

Auf einigen Linux-Distributionen ist Java standardmäßig installiert. Es handelt sich jedoch nur um die JRE und nicht um das JDK. Sie können dies überprüfen, indem der Java-Befehl gefunden wird, der Javac-Befehl jedoch NICHT gefunden wird.

java  # would show manual of arguments
javac # would give not found error if JDK not installed
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
java --version  # OR "java -version" for older java
javac --version
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Lesen Sie diese Artikel, um die Unterschiede zwischen JDK, JRE und JVM zu erfahren:

  • Java Programming Environment und Java Runtime Environment (JRE)
  • Was sind JDK, JRE, JVM und JIT in Java?

In Fedora werden die JREs/JDKs in /usr/lib/jvm gespeichert. So können Sie sich den Inhalt ansehen oder ihn wie folgt abfragen:

find /usr/lib/jvm -name java
find /usr/lib/jvm -name javac
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Installieren eines OpenJDK

Ich verwende Fedora 40, wo der Paketmanager dnf ist. Sie würden Ihr gewünschtes OpenJDK über den Paketmanager Ihrer jeweiligen Linux-Distribution installieren (wie apt für Ubuntu/Debian):

  • Suchen Sie nach verfügbaren JDKs zur Installation:
  dnf search jdk
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Sie erhalten eine Liste der zur Installation verfügbaren Pakete mit verschiedenen Java-Versionen sowie das Variantensuffix im Paket. Die Headless-Varianten enthalten normalerweise nur die JRE. Um das vollständige JDK mit allen notwendigen Tools für die Java-Entwicklung zu installieren, benötigen wir die Entwicklungsvariante des Pakets, die normalerweise das Suffix -devel im Namen für dnf enthält. Hier ist eine Liste einiger Paketvariantennamen für Java 17 OpenJDK aus der dnf-Ausgabe:

  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
Nach dem Login kopieren
Nach dem Login kopieren

Unter Ubuntu gibt es weniger Pakete und das Paket, das Sie installieren möchten, heißt normalerweise openjdk-17-jdk für das gesamte JDK-Toolset

  • Installieren Sie Ihr gewünschtes OpenJDK-Paket aus dieser 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
Nach dem Login kopieren
Nach dem Login kopieren
  • Überprüfen Sie die Installation, indem Sie überprüfen, ob Java- und Javac-Befehle gefunden werden

Installieren eines Oracle JDK

  • Besuchen Sie die offizielle Oracle SE-Downloadseite. Suchen Sie den Download-Bereich Ihrer erforderlichen Java-Version

  • Laden Sie das passende Paket für Ihre Plattform herunter. Laden Sie für RedHat-basierte Linux-Distributionen wie Fedora das .rpm-Paket herunter (und .deb für Ubuntu/Debian). Vor dem Herunterladen müssen Sie sich bei Oracle anmelden und den Bedingungen zustimmen

  • Doppelklicken Sie auf die heruntergeladene Datei (z. B. jdk-11.0.24_linux-x64_bin.rpm) und wählen Sie „Installieren“. Es wird das Oracle JDK installieren und konfigurieren.

  • Nachdem OracleJDK installiert ist, überprüfen Sie die erkannten Java- und Javac-Befehle

JDKs über IntelliJ installieren

Sie können JDKs auch aus IntelliJ selbst heraus installieren:

  • Klicken Sie auf das Zahnradsymbol ⚙️ und gehen Sie dann zur Projektstruktur. Wählen Sie SDKs aus und klicken Sie auf das Plus-Symbol. Wählen Sie dann das JDK aus, das heruntergeladen und installiert werden soll
  • Das JDK wird im Ordner ~/.jdks installiert, zum Beispiel: ~/.jdks/openjdk-20.0.2/

IntelliJ erkennt automatisch Ihre verfügbaren JDK-Speicherorte auf Ihrem System. Sie können auch Ihre vorhandenen JDK-Ordnerspeicherorte wie /usr/lib/jvm/jdk-11-oracle-x64 unter konfigurierten JDKs in der Projektstruktur hinzufügen


Arbeiten mit mehreren Java-Installationen

Der Befehl „update-alternatives“ unter Linux (in Fedora auch nur „Alternatives“ genannt) erstellt, entfernt, verwaltet und zeigt Informationen über die symbolischen Links an, aus denen das Alternativensystem besteht.

Es ist möglich, dass auf einem System gleichzeitig mehrere Programme installiert sind, die gleiche oder ähnliche Funktionen erfüllen. Ein generischer Name im Dateisystem wird von allen Dateien gemeinsam genutzt, die austauschbare Funktionalität bieten. Das Alternativensystem hilft dabei, festzustellen, auf welche tatsächliche Datei dieser generische Name verweist.

Nützliche Referenzen:

  • Update-Alternativen – Linux-Manpage
  • Einführung in den Alternatives-Befehl unter Linux – RedHat

Wenn Sie OpenJDK über Ihren Paketmanager oder Oracle-JDK aus der heruntergeladenen Datei installieren, sollten die Alternativen während dieses Vorgangs automatisch aktualisiert werden

Verfügbare Optionen für einen Befehl anzeigen

java  # would show manual of arguments
javac # would give not found error if JDK not installed
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Die Ausgabe würde wie folgt aussehen:

java --version  # OR "java -version" for older java
javac --version
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Siehe auch die Liste der alternativen Optionen für Javac

Hinzufügen eines alternativen Eintrags für einen Befehl

Wenn eine Alternative für Ihre Befehle NICHT in der Liste registriert ist, können Sie sie manuell hinzufügen als:

find /usr/lib/jvm -name java
find /usr/lib/jvm -name javac
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Zum Beispiel habe ich das JetBrains Runtime (JCEF) JDK aus IntelliJ heruntergeladen, das im Ordner ~/.jdks/jbrsdk_jcef-17.0.12/ heruntergeladen wurde; aber es wurde nicht in der Alternativliste angezeigt. Daher füge ich den Alternativeneintrag für Java und Javac hinzu als:

  dnf search jdk
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Fügen Sie auf ähnliche Weise nach Bedarf Alternativen für weitere Befehle wie jar, Javadoc usw. hinzu

Sie können Follower-Links auch hinzufügen als:

--install link name path priority [--follower link name path]... [--initscript service] [--family name]

Wechseln zwischen verfügbaren Alternativen eines Befehls

Wählen Sie zwischen den vorhandenen Java-Installationen

  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
Nach dem Login kopieren
Nach dem Login kopieren

Die Ausgabe würde wie folgt aussehen. Beachten Sie, dass * die beste verfügbare Version und Ihre aktuelle Auswahl bezeichnet:

  # 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
Nach dem Login kopieren
Nach dem Login kopieren

Wählen Sie ebenfalls eine der alternativen Optionen für Javac

Denken Sie beim Deinstallieren/Entfernen Ihrer JDK-Pakete daran, auch die entsprechenden Alternativeinträge zu löschen

Entfernen eines Alternativeneintrags

Zum Beispiel, um den alternativen Java-Befehlseintrag des JCEF JDK zu entfernen:

java  # would show manual of arguments
javac # would give not found error if JDK not installed
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Fügen Sie Java zu PATH hinzu

Dies sollte nicht erforderlich sein, wenn Sie die Update-Alternatives-Methode zur Verwaltung zwischen Java-Installationen verwenden und alle Einträge vollständig sind

Um die Konfiguration in Ihrem Shell-Profil jedoch manuell festzulegen, können Sie wie folgt vorgehen:

  • Legen Sie Umgebungsvariablen in Ihrer Shell-Konfigurationsdatei fest (z. B. ~/.zshrc, ~/.bashrc usw.)
java --version  # OR "java -version" for older java
javac --version
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
  • SHELL neu starten:
find /usr/lib/jvm -name java
find /usr/lib/jvm -name javac
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
  • Jetzt sollte Java erfolgreich erkannt werden
  dnf search jdk
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonDie bevorzugte Methode zum Installieren und Verwalten von Java JDKs unter Linux. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!