Ubuntu: OpenJDK 8 - Paket kann nicht gefunden werden

94

Ich habe gerade Ubuntu installiert und arbeite zum ersten Mal in einer Linux-Umgebung.

Wie auch immer, ich habe das Java 8 JDK direkt von Oracle heruntergeladen, aber ich verstehe, dass es auch ein OpenJDK für Java 8 gibt. Ich habe zwei Fragen.

  1. Was ist der Unterschied zwischen der Oracle-Version und OpenJDK? Für und Wider?

  2. Wenn ich versuche, OpenJDK 8 zu bekommen, kann ich nicht. Ich füge den Terminalbefehl und die Fehlermeldung ein, die ich hier erhalte, und hoffe auf Rat. Wiederum sehr neu in Linux, war ich zu diesem Zeitpunkt weniger als eine Stunde in meiner ersten Linux-Distribution.

    user@computer:~/Java$ sudo apt-get install openjdk-8-jdk
    Reading package lists... Done
    Building dependency tree       
    Reading state information... Done
    E: Unable to locate package openjdk-8-jdk

Jede Hilfe wäre dankbar. In der Zwischenzeit werde ich nur das Oracle-Paket verwenden. Vielen Dank.

Bearbeiten:

Jetzt habe ich ein neues Problem. Ich habe OpenJDK 7 installiert, es wurde mit Maven geliefert und erst installiert, bevor mir klar wurde, dass ich einen Zwei-für-Eins-Deal bekommen würde. Jetzt habe ich JDK 7 und Eclipse und Maven und sie arbeiten alle, aber ich bin eher auf JDK 7 als auf 8 fixiert.

Ich habe gesehen, dass es unten einen Link gibt. Ich habe vor, ihn am Morgen zu überprüfen. Es ist 2 Uhr morgens und ich bin gerade müde. Jeder andere Rat für diese neue Ausgabe wäre willkommen, sonst werde ich diesen Link auf jeden Fall gleich am Morgen überprüfen.

user2223059
quelle
Welche Ubuntu-Version verwenden Sie? In den neuesten Versionen war es als Installationsoption verfügbar.
Makoto
Stephens Link wird Ihr Problem beheben :)
Juned
Vielen Dank. Es ist 2 Uhr morgens, also gehe ich ins Bett, aber ich werde morgen früh den Link überprüfen. Ich habe meiner Frage eine Bearbeitung mit einem zusätzlichen Problem hinzugefügt. Wenn Sie sich das ansehen könnten, wäre das großartig. Wenn der vorhandene Link / die Antwort auch dabei hilft, entschuldige ich mich dafür, dass ich zu müde bin, um sie mir jetzt anzusehen. Ich werde sie morgen früh überprüfen.
user2223059
Ich bin auf Ubuntu 14.10, glaube ich. Was auch immer die letzte langfristige Veröffentlichung war.
user2223059

Antworten:

119

UPDATE : Installation ohne Root-Rechte unten


Ich rate Ihnen, Pakete nicht manuell auf dem Ubuntu-System zu installieren, wenn bereits ein (halboffizielles) Repository vorhanden ist, das Ihr Problem lösen kann. Verwenden Sie außerdem Oracle JDK für die Entwicklung, um (sehr sporadische) Kompatibilitätsprobleme zu vermeiden (ich habe es vor vielen Jahren versucht, es ist jetzt sicherlich besser).

Fügen Sie das webupd8- Repo Ihrem System hinzu:

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update

Installieren Sie Ihre bevorzugte Version von jdk (Versionen von Java-6 bis Java-9 verfügbar):

sudo apt-get install oracle-java8-installer

Sie können auch mehrere jdk-Versionen installieren und openjdk- und oracle-Versionen mischen. Anschließend können Sie mit dem Befehl update-java-alternatives zwischen der installierten Version wechseln:

# list available jdk
update-java-alternatives --list

# use jdk7
sudo update-java-alternatives --set java-7-oracle

# use jdk8
sudo update-java-alternatives --set java-8-oracle

Bedarf

Wenn Sie add-apt-repository: command not foundsicher sein müssen, software-properties-commoninstalliert zu haben :

sudo apt-get install software-properties-common

Wenn Sie eine ältere Version von Ubuntu verwenden:

sudo apt-get install python-software-properties

JDK-Installation ohne Root-Rechte

Wenn Sie keine Administratorrechte auf Ihrem Zielcomputer haben, können Sie am einfachsten sdkmandas zulu-zertifizierte openjdk installieren:

curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk install java

HINWEIS : sdkman erlaubt auch die offizielle Oracle JDK zu installieren, obwohl es nicht eine der Standardoption ist. Verfügbare Versionen anzeigen mit:

sdk ls java

Installieren Sie die ausgewählte Version mit:

sdk install java <version>

Beispielsweise:

sdk install java 9.0.1-oracle

Glossar der Befehle

  • sudo <command> [command_arguments] : Führe einen Befehl mit dem Superuser-Privileg aus.

  • add-apt-repository <PPA_id> : Ubuntu (genau wie jedes Debian-Derivat und im Allgemeinen jede Linux-Distribution) verfügt über ein Haupt-Repository von Paketen, die Dinge wie Paketabhängigkeiten und Aktualisierungen behandeln. In Ubuntu ist es möglich, das Haupt-Repository mithilfe eines PPA (Personal Package Archive) zu erweitern, das normalerweise Pakete enthält, die nicht im System verfügbar sind (genau wie oracle jdk), oder aktualisierte Versionen der verfügbaren (Beispiel: LibreOffice 5 in LTS ist nur über dieses verfügbar) PPA ).

  • apt-get [install|update|upgrade|purge|...] : Es ist "der" Befehlszeilen-Pakethandler, mit dem der Status jedes Repositorys auf dem System bearbeitet wird (Installation / Aktualisierung / Aktualisierung kann als Änderung des aktuellen Status des Repositorys angesehen werden).

In unserem Fall : Mit dem Befehl sudo add-apt-repository ppa:webupd8team/javainformieren wir das System, dass das nächste Repository-Update Paketinformationen auch von webupd8 repo abrufen muss.

Mit sudo apt-get updateaktualisieren wir tatsächlich das System-Repository (all diese Vorgänge erfordern Superuser-Berechtigungen, daher stellen wir den Befehlen sudo voran ).

sudo apt-get install oracle-java8-installer

  • Update-Java-Alternativen (eine bestimmte Java-Version von Update-Alternativen ): In Ubuntu bieten mehrere Pakete die gleiche Funktionalität (im Internet surfen, E-Mails kompilieren, eine Textdatei bearbeiten oder ausführbare Java / Java-Dateien bereitstellen ...). Damit das System das Benutzerfavoriten-Tool für eine bestimmte Aufgabe auswählen kann, wird ein Mechanismus verwendet, der Symlinks unter /etc/alternatives/verwendet. Versuchen Sie, das JDK wie oben angegeben zu aktualisieren (wechseln Sie zwischen Java 7 und Java 8) und sehen Sie, wie Sie die Ausgabe dieses Befehls ändern:

    ls -l /etc/alternatives/java*

In unserem Fall : sudo update-java-alternatives --set java-8-oracleAktualisieren Sie die Symlinks unter / etc / alternatives, um auf die ausführbaren Dateien von Java-8-Oracle zu verweisen.

Extras:

  • man <command> : Verwenden Sie man, um eine wirklich gut geschriebene und detaillierte Hilfe zu (fast) jedem Shell-Befehl und seinen Optionen zu lesen (jeder Befehl, den ich in dieser kleinen Antwort erwähne, hat eine Manpage, versuchen Sie es man update-java-alternatives).

  • apt-cache search <search_key> : Fragen Sie den APT-Cache ab, um nach einem Paket zu suchen, das mit dem angegebenen Suchschlüssel zusammenhängt (kann der Paketname oder ein Wort in der Paketbeschreibung sein).

  • apt-cache show <package> : Stellt APT-Informationen für ein bestimmtes Paket bereit (Paketversion, installiert oder nicht, Beschreibung).

Giuseppe Ricupero
quelle
Das Problem ist, dass ich die Meldung "Paket oracle-java8-installer kann nicht gefunden werden" erhalte. Das gleiche passiert, wenn ich versuche, openjdk 8 mit dem Befehl sudo apt-get zu erhalten.
user2223059
2
Dies ist insbesondere die kommerzielle Oracle-Version von Java (zumindest als solche bezeichnet), nicht die Open Community-Version (openjre).
ThorSummoner
1
@basZero: Anscheinend müssen Sie Software-Eigenschaften installieren : apt-get install software-properties-common. Ich werde den Beitrag entsprechend aktualisieren, um diese Anforderung aufzunehmen. Vielen Dank
Giuseppe Ricupero
1
Diese Antwort ist ungültig - Oracle verbietet das direkte Herunterladen des Java-Installationsprogramms. sudo apt-get install oracle-java8-installer schlägt fehl
Alec Istomin
2
Ich habe bereits seit 4 Stunden versucht, dieses Problem zu lösen. Vielen Dank für diese tolle Lösung!
Ickyrr
108

Wie Sie sehen, habe ich nur Java 1.7 installiert (auf einem Ubuntu 14.04-Computer).

update-java-alternatives -l
java-1.7.0-openjdk-amd64 1071 /usr/lib/jvm/java-1.7.0-openjdk-amd64

Um Java 8 zu installieren, habe ich:

sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-8-jdk

Danach habe ich jetzt Java 7 und 8,

update-java-alternatives -l
java-1.7.0-openjdk-amd64 1071 /usr/lib/jvm/java-1.7.0-openjdk-amd64
java-1.8.0-openjdk-amd64 1069 /usr/lib/jvm/java-1.8.0-openjdk-amd64

BONUS HINZUGEFÜGT (wie man zwischen verschiedenen Versionen wechselt)

  • Führen Sie den folgenden Befehl vom Terminal aus:

sudo update-alternatives --config java

There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                            Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1071      auto mode
  1            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1071      manual mode
* 2            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1069      manual mode

Press enter to keep the current choice[*], or type selection number:

Wie Sie sehen, wird JDK 8 geöffnet. Um zu JDK 7 zu wechseln, drücken Sie 1und drücken Sie die EnterTaste. Machen Sie dasselbe auch für javac, sudo update-alternatives --config javac.

Überprüfen Sie die Versionen, um die Änderung zu bestätigen: java -versionund javac -version.

Samsamara
quelle
2
Sehr nützlich, da ich nicht wusste, welches Repo für die Installation von OpenJDK erforderlich ist! Vielen Dank.
Cram2208
@ cram2208 froh, dass dir das geholfen hat. danke für den Kommentar.
Samsamara
Ist das openjdk-r sicher genug für den Server?
Wang
Vielen Dank für die detaillierte Antwort, diese Lösung ist perfekt für mich.
Muddasir23
@ Muddasir23 froh, dass das hilfreich war!
Samsamara
13

Ich bekomme OpenJDK 8 aus den offiziellen Debian-Repositories und nicht aus einer zufälligen PPA- oder nicht freien Oracle-Binärdatei. So habe ich es gemacht:

sudo apt-get install debian-keyring debian-archive-keyring

Machen Sie /etc/apt/sources.list.d/debian-jessie-backports.list:

deb http://httpredir.debian.org/debian/ jessie-backports main

Machen Sie /etc/apt/preferences.d/debian-jessie-backports:

Package: *
Pin: release o=Debian,a=jessie-backports
Pin-Priority: -200

Dann machen Sie endlich die Installation:

sudo apt-get update
sudo apt-get -t jessie-backports install openjdk-8-jdk
Hans-Christoph Steiner
quelle
1
Und schließlich update-alternatives --config java ;-)
Javali
Vielen Dank! Dies ist die einzige Lösung, die für mich funktioniert hat (Deb 8)
2
sudo apt-get update
sudo apt-get  install openjdk-8-jdk

das sollte funktionieren

Ahmed Emad
quelle
Bitte fügen Sie eine Erklärung hinzu, was dies zu den vorhandenen Antworten hinzufügt.
Gert Arnold
Ich habe die WSL2 unter Windows verwendet und vergessen, die Pakete vor der Installation des OpenJDK zu aktualisieren, und habe den gleichen Fehler erhalten. @GertArnold, die Antwort von Zoe hat mir in diesem Szenario geholfen.
PCDRO
1

Ich hatte das gleiche Problem und habe alle Lösungen auf dieser Seite ausprobiert, aber keine davon hat es geschafft.

Was schließlich funktionierte, war das Hinzufügen des universeRepos zu meiner Repo-Liste. Führen Sie dazu den folgenden Befehl aus

sudo add-apt-repository universe

Nachdem ich den obigen Befehl ausgeführt hatte, konnte ich ausführen

sudo apt install openjdk-8-jre

ohne ein Problem und das Paket wurde installiert.

Hoffe das hilft jemandem.

Daniel Black
quelle
Ich bin mir nicht sicher, warum ich für diese Antwort abgelehnt wurde. Wenn etwas nicht stimmt oder ein potenzielles Problem vorliegt, hinterlassen Sie bitte einen Kommentar, damit andere und ich es besser verstehen.
Daniel Black
0

Nach dem Hinzufügen des JDKRepos möchten Sie vor der Installation möglicherweise zuerst ein Update ausführen, damit das Repo hinzugefügt werden kann apt update

und fahren Sie dann mit Ihrer Installation fort sudo apt install adoptopenjdk-8-hotspot

franck
quelle