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.
Was ist der Unterschied zwischen der Oracle-Version und OpenJDK. Für und Wider?
Wenn ich versuche, OpenJDK 8 zu bekommen, kann ich nicht. Ich füge den Terminalbefehl und die hier angezeigte Fehlermeldung ein und hoffe auf Ratschläge. Wieder sehr neu in Linux, war ich an diesem Punkt weniger als eine Stunde in meiner ersten Linux-Distribution.
[email protected]:~/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 verwende ich nur das Oracle-Paket. Vielen Dank.
Bearbeiten:
Also, jetzt habe ich ein neues Problem. Ich habe OpenJDK 7 installiert, es wurde mit Maven geliefert und erst installiert, als ich merkte, dass ich einen Zwei-für-Eins-Deal bekam. 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 dankbar, sonst werde ich diesen Link als erstes am Morgen auf jeden Fall prüfen.
[~ # ~] Update [~ # ~] : Installation ohne Root-Rechte weiter unten
Ich rate Ihnen, Pakete nicht manuell auf dem Ubuntu-System zu installieren, wenn es bereits ein (semi-offizielles) Repository gibt, das Ihr Problem lösen kann. Verwenden Sie 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 zu 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 Versionen von jdk installieren und die Versionen von openjdk und Oracle mischen. Dann können Sie mit dem Befehl update-Java-alternatives zwischen den installierten Versionen 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
Anforderungen
Wenn Sie add-apt-repository: command not found
Erhalten, stellen Sie sicher, dass software-properties-common
Installiert ist:
Sudo apt-get install software-properties-common
Wenn Sie eine ältere Ubuntu-Version verwenden:
Sudo apt-get install python-software-properties
JDK-Installation ohne Root-Rechte
Wenn Sie auf Ihrem Zielcomputer keine Administratorrechte haben, können Sie am einfachsten sdkman
verwenden, um das zulu-zertifizierte openjdk zu installieren:
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk install Java
[~ # ~] note [~ # ~]: Mit sdkman kann auch das offizielle Oracle-JDK installiert werden, obwohl dies nicht die Standardoption ist. Verfügbare Versionen anzeigen mit:
sdk ls Java
Installiere die gewählte Version mit:
sdk install Java <version>
Zum Beispiel:
sdk install Java 9.0.1-Oracle
Glossar der Befehle
Sudo <command> [command_arguments]
: Führen Sie einen Befehl mit dem Superuser-Privileg aus.
add-apt-repository <PPA_id>
: Ubuntu (genau wie alle Debian-Derivate und generell jede Linux-Distribution) hat ein Hauptrepository von Paketen die Dinge wie Paketabhängigkeiten und Aktualisierungen handhaben. In Ubuntu ist es möglich, das Haupt-Repository mit einem PPA (Personal Package Archive) zu erweitern, das normalerweise nicht im System verfügbare Pakete (wie Oracle jdk) oder aktualisierte Versionen verfügbarer Pakete enthält (Beispiel: LibreOffice 5 in LTS ist nur über dieses verfügbar PPA ).
apt-get [install|update|upgrade|purge|...]
: Dies ist "der" Befehlszeilen-Paket-Handler, mit dem der Zustand manipuliert wird = von jedem Repository auf dem System (Installation/Aktualisierung/Aktualisierung kann als Änderung des aktuellen Repository-Status angesehen werden).
In unserem Fall: Mit dem Befehl Sudo add-apt-repository ppa:webupd8team/Java
Teilen wir dem System mit, dass das nächste Repository-Update Paketinformationen auch von webupd8 repo abrufen muss.
Mit Sudo apt-get update
Aktualisieren wir das System-Repository tatsächlich (für all diese Vorgänge sind Superuser-Berechtigungen erforderlich, daher stellen wir den Befehlen Sudo voran).
Sudo apt-get install Oracle-Java8-installer
update-Java-alternatives (eine bestimmte Java version von update-alternatives ): In Ubuntu bieten mehrere Pakete die gleiche Funktionalität (im Internet surfen, E-Mails kompilieren, eine Textdatei bearbeiten oder ausführbare Java/Javac-Dateien bereitstellen ...) Damit das System den Benutzer auswählen kann favourites tool verwendet für eine bestimmte aufgabe einen mechanismus mit symlinks unter /etc/alternatives/
Versuchen Sie, das jdk wie oben angegeben zu aktualisieren (wechseln Sie zwischen Java 7 und Java 8) und sehen Sie, wie sich die Ausgabe dieses Befehls ändert:
ls -l /etc/alternatives/Java*
In unserem Fall: Sudo update-Java-alternatives --set Java-8-Oracle
Aktualisieren Sie Symlinks unter/etc/alternatives, um auf ausführbare Java-8-Oracle-Dateien zu verweisen.
Extras:
man <command>
: Verwenden Sie man, um eine wirklich gut geschriebene und detaillierte Hilfe zu (fast) jedem Shell-Befehl und seinen Optionen (every) zu lesen Befehl, den ich in dieser kleinen Antwort erwähne, hat eine Manpage, versuchen Sie man update-Java-alternatives
).
apt-cache search <search_key>
: Fragen Sie den APT Cache ab, um nach einem mit search_key verknüpften Paket zu suchen zur Verfügung gestellt (kann der Paketname oder ein Wort in der Paketbeschreibung sein).
apt-cache show <package>
: Liefert APT Informationen für ein bestimmtes Paket (Paketversion, installiert oder nicht, beschreibung).
Wie Sie sehen können, habe ich nur Java 1.7 installiert (auf einem Ubuntu 14.04-Rechner).
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 (umschalten zwischen verschiedenen Versionen)
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 können, wird JDK 8 geöffnet. Um zu JDK 7 zu wechseln, drücken Sie 1
und drück die Enter Schlüssel. Machen Sie dasselbe für javac
und für Sudo update-alternatives --config javac
.
Überprüfen Sie die Versionen, um die Änderung zu bestätigen: Java -version
und javac -version
.
Ich bekomme OpenJDK 8 aus den offiziellen Debian-Repositories und nicht aus zufälligen PPA- oder nicht freien Oracle-Binärdateien. So habe ich es gemacht:
Sudo apt-get install debian-keyring debian-archive-keyring
Machen /etc/apt/sources.list.d/debian-jessie-backports.list
:
deb http://httpredir.debian.org/debian/ jessie-backports main
Machen /etc/apt/preferences.d/debian-jessie-backports
:
Package: *
Pin: release o=Debian,a=jessie-backports
Pin-Priority: -200
Dann mach endlich die Installation:
Sudo apt-get update
Sudo apt-get -t jessie-backports install openjdk-8-jdk
Sudo apt-get update
Sudo apt-get install openjdk-8-jdk
das sollte funktionieren