Frage Wie installiere ich openjdk 7 unter Ubuntu 16.04 oder höher?


Ich möchte mein Hauptsystem auf 16.04 upgraden, aber ich arbeite an Projekten, die OpenJDK 7 benötigen.

Anscheinend ist es nicht von einem Trivial verfügbar apt-get install openjdk-7-jdk. Nur die Versionen 8 und 9 sind im Repository aufgelistet.

Kann mir jemand Anweisungen zur Installation geben?


108
2018-04-23 10:18


Ursprung


Falls jemand sich fragt, warum Sie JDK 7 immer noch wollen, bin ich in der gleichen Situation, weil ich denke, dass neo4j 2.1.6 nicht gut mit Ubuntu 16.04 spielt und das einzige, was ich sehen kann, ist das JDK. - Sridhar-Sarnobat
Benötigen Sie explizit openjdk 7 als System-JVM oder benötigen Sie nur eine Java 7-Laufzeitumgebung? Sie können Letzteres aus den Oracle-Archiven herunterladen. - Thorbjørn Ravn Andersen


Antworten:


Sicherheitswarnung

Pakete in der unten genannten PPA werden nicht mit Sicherheit aktualisiert   Patches für Java. Nicht in der Produktion verwenden; Siehe alternative Antworten   stattdessen.

Zum Zeitpunkt des Schreibens war der letzte Upload für OpenJDK 7 abgeschlossen   '2016-04-22' mit Version 7u95 und immer noch als 'aktuell' verfügbar, wo   Ubuntu 14.04 ist gewesen aktualisiert auf 7u181.


UPDATE: OBWOHL DAS IST DIE MEIST GEWÄHLTE ANTWORT, SEINE MÖGLICHERWEISE NICHT DIE, DIE SIE IM JAHR 2018 VERWENDEN WOLLEN, WÄHREND DER SICHERHEITS UPDATES DURCH DIESE PPA.

Ich fand die folgenden Anweisungen, die für mich funktionierten:

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

Dies definiert die "PPA für OpenJDK-Uploads (eingeschränkt)" als zusätzliche Paketspeicherung, aktualisiert Ihre Informationen und installiert das Paket mit seinen Abhängigkeiten (von diesem Repository).


137
2018-04-23 22:34



Wenn Sie irrtümlicherweise openjdk-8 installiert haben (wie ich es getan habe), dann müssen Sie nach dem Beantworten dieser Antwort a sudo update-java-alternatives Sie können also openjdk-7 als Standard festlegen. - Rian Sanderson
FYI: Dies funktioniert derzeit nicht für 16.10 - opticyclic
-1 weil dieses PPA völlig veraltet ist und viele wichtige Sicherheits-Patches ignoriert. Total inakzeptabel, dass dies installiert wurde, imo. - gertvdijk
Funktioniert auch nicht für 17.04. - Colin Harrington
-1 auch als die vorgeschlagene PPA ist beschränkt und wird nicht auf dem neuesten Stand gehalten. - delimiter


Es sieht nicht so aus, als würde der Betreuer von openjdk-r / ppa das Paket openjdk-7 über die Version 7u95-2.6.4-3 hinaus aktualisieren. Die Beschreibung dieses Pakets "Aus debian experimental im Primärarchiv für Debian GNU / Linux kopiert" gibt uns einen Hinweis darauf, wie wir damit umgehen sollen.

Option 1: Manuelle Installation

  1. Laden Sie die für Ihre Architektur vorgesehenen Pakete herunter:
    (Für die meisten Benutzer bedeutet das amd64 wenn 64bit, oder i386 wenn 32bit Ubuntu installiert ist)

  2. (Versuch,) die Pakete mit zu installieren dpkg:

    Ubuntu 17.10 und früher:

    sudo dpkg -i openjdk-7-* libjpeg62-turbo* libfontconfig1* fontconfig-config*
    

    Ubuntu 18.04 und später:

    sudo dpkg -i openjdk-7-* libjpeg62-turbo*
    
  3. Überprüfen Sie die Ausgabe von dpkg. Wenn es Abhängigkeitsprobleme gab - was wahrscheinlich ist - werden Sie Folgendes sehen (mit Ihrer Architektur für amd64 ersetzt):

    Bei der Verarbeitung sind Fehler aufgetreten:
    openjdk-7-jre: amd64
    openjdk-7-jre-kopflos: amd64
    openjdk-7-jdk: amd64

    Wenn es keine Abhängigkeitsprobleme gab, großartig, du bist fertig, gehe zu # 4. Andernfalls müssen Sie, falls Sie einige Abhängigkeitsprobleme lösen müssen, Folgendes tun:

    sudo apt install -f
    

    Beachten Sie, dass keine erneute Ausführung erforderlich ist dpkg nach der Vermietung apt Abhängigkeiten auflösen Die Installation der openjdk-Pakete wird automatisch beendet.

  4. Aktualisieren Sie Java-Alternativen. Sie können alle installierten Java-Versionen mit anzeigen update-java-alternatives --list. Um OpenJDK Java 1.7 zu aktivieren, führen Sie Folgendes aus:

    sudo update-java-alternatives -s java-1.7.0-openjdk-amd64
    

    Möglicherweise bemerken Sie einen Fehler über die IcedTeaPlugin.so Plugin ist nicht verfügbar. Dies ist für Entwickler, die mit dem JDK arbeiten, kein wirkliches Problem.

  5. Überprüfen Sie, ob Java funktioniert:

    java -version
    

    was sollte etwas ähnliches ausgeben:

    Java-Version "1.7.0_161"
    OpenJDK Laufzeitumgebung (IcedTea 2.6.12) (7u161-2.6.12-1)
    OpenJDK 64-Bit Server VM (Build 24.161-b01, gemischter Modus)

Option 2: Automatische Installation (einschließlich Updates mit apt)

Pinning kann verwendet werden, um openjdk-7-jdk und seine Abhängigkeiten von Debian-Repositories zu installieren und zu aktualisieren.

  1. Erstellen Sie eine Pinning-Datei, die sagt apt nur Pakete zu berücksichtigen, die uns interessieren (wir wollen natürlich nicht, dass unsere gesamte Ubuntu-Distribution mit Debian-Test-Paketen "aufgerüstet" wird).

    Erstelle Datei /etc/apt/preferences.d/debian mit den folgenden Inhalten. Sie benötigen Superuser-Privilegien, also verwenden Sie eines der sudo vim, sudo nano, gksudo gedit, etc.

    Package: *
    Pin: release o=Debian,n=experimental
    Pin-Priority: -1
    
    Package: *
    Pin: release o=Debian,n=sid
    Pin-Priority: -1
    
    Package: openjdk-7-jdk
    Pin: release o=Debian,n=experimental
    Pin-Priority: 500
    
    Package: openjdk-7-jre
    Pin: release o=Debian,n=experimental
    Pin-Priority: 500
    
    Package: openjdk-7-jre-headless
    Pin: release o=Debian,n=experimental
    Pin-Priority: 500
    
    Package: libjpeg62-turbo
    Pin: release o=Debian,n=sid
    Pin-Priority: 500
    

    Für Ubuntu 17.10 und früher, füge auch folgendes hinzu (und siehe Hinweis unten):

    Package: libfontconfig1
    Pin: release o=Debian,n=sid
    Pin-Priority: 500
    
    Package: fontconfig-config
    Pin: release o=Debian,n=sid
    Pin-Priority: 500
    
  2. Installiere den Debian-Schlüsselring:

    sudo apt install debian-archive-keyring
    

    Hinweis: Dies ist zwar die einfachste Methode zum Hinzufügen des Debian-Schlüsselbunds, ist jedoch möglicherweise nicht aktuell. Überprüfen Sie beim Ausführen wie folgt Folgendes apt update in Schritt 4:

    W: GPG-Fehler: http://cdn-fastly.deb.debian.org/debian experimentelle InRelease: Die folgenden Signaturen konnten nicht verifiziert werden, da der öffentliche Schlüssel nicht verfügbar ist: NO_PUBKEY 8B48AD6246925553 NO_PUBKEY 7638D0442B90D010
    E: Das Repository "http://httpredir.debian.org/debian experimental InRelease" ist nicht signiert.

    Wenn dieser Fehler angezeigt wird, fügen Sie die erforderlichen Schlüssel manuell hinzu mit:

    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 8B48AD6246925553
    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 7638D0442B90D010
    

    woher 8B48AD6246925553 und 7638D0442B90D010 sollte den Pubkeys entsprechen, die Sie in der Warnmeldung sehen.

  3. Fügen Sie die benötigten Repositories hinzu:

    sudo add-apt-repository 'deb http://httpredir.debian.org/debian experimental main'
    sudo add-apt-repository 'deb http://httpredir.debian.org/debian sid main'
    

    Warum nicht ein stabiles Debian-Repository verwenden? Sie werden in unerfüllbare Abhängigkeiten mit Debian Stable geraten. Die experimentellen Repositorys (für openjdk-7) und sid (für libjpeg62-turbo, libfontconfig1 und fontconfig-config) sind mit Abhängigkeitsversionen milder.

  4. Aktualisieren apt Cache (erwarte, dass dies eine Weile dauert, da Debians Paketlisten groß sind):

    sudo apt update
    
  5. Installieren Sie openjdk-7-jdk:

    sudo apt install openjdk-7-jdk
    
  6. Aktualisieren Sie Java-Alternativen. Sie können alle installierten Java-Versionen mit anzeigen update-java-alternatives --list. Um OpenJDK Java 1.7 zu aktivieren, führen Sie Folgendes aus:

    sudo update-java-alternatives -s java-1.7.0-openjdk-amd64
    

    Möglicherweise bemerken Sie einen Fehler über die IcedTeaPlugin.so Plugin ist nicht verfügbar. Dies ist für Entwickler, die mit dem JDK arbeiten, kein wirkliches Problem.

  7. Überprüfen Sie, ob Java funktioniert:

    java -version
    

    was sollte etwas ähnliches ausgeben:

    Java-Version "1.7.0_161"
    OpenJDK Laufzeitumgebung (IcedTea 2.6.12) (7u161-2.6.12-1)
    OpenJDK 64-Bit Server VM (Build 24.161-b01, gemischter Modus)

fontconfig Notizen

libfontconfig1 und fontconfig-config muss auf Ubuntu 17.10 und früher auf 2.12 oder später aktualisiert werden. Die Update-Pakete von Debian enthalten keine Ubuntu-Anpassungen, daher zeigen einige Anwendungen hässliche Schriftarten mit diesen installierten Paketen an; z.B. Charles Web Debugging Proxy. Abhängig von den Programmen, die Sie verwenden, können Sie von diesem Problem betroffen sein oder nicht.


47
2017-07-27 14:51



Interessante Antwort, bitte aktualisieren Sie es, wenn Sie eine Möglichkeit finden, dieses Paket automatisch aktualisiert zu halten. - J.Serra
Ich habe gerade versucht, jdk 7 auf Ubuntu 16.04 zu installieren und das ist der einzige Weg, wie ich es geschafft habe, es zum Laufen zu bringen. Vielen Dank! - link
@ J.Serra Antwort überarbeitet mit automatischer Update-Methode. - MDMower
perfekt beantwortet besonders die automatische Methode wird sehr geschätzt! Danke für die Zeit, um herauszufinden und aufzuschreiben! - steadfasterX
Die automatische Methode funktionierte meistens für mich, ist aber auch nicht vollständig permanent. Ich musste zwei weitere Pakete zu /etc/apt/preferences.d/debian hinzufügen (zusätzlich zu libjpeg62-turbo): libfontconfig1 und fontconfig-config - comodoro


Sie können eine OpenJDK 7 von Azul herunterladen, die Ihren Anforderungen entspricht. Beide haben eine DEB (für das Paketsystem) und eine ZIP-Verteilung. Ich habe nur mit der ZIP-Distribution gearbeitet.

http://www.azul.com/downloads/zulu/zulu-linux/


5
2017-10-23 19:10





Installiere Java 7 unter Ubuntu 16.04, Ubuntu 17.04

Es wird empfohlen zu installieren Oracle Java, weil es eine Leistungsgrenze hat OpenJDK. Aus diesem Grund möchte ich eine Alternative veröffentlichen. Wenn Sie Oracle Java installieren möchten, führen Sie die folgenden Befehle im Terminal aus, um es von PPA zu installieren.

  1. Fügen Sie die benötigten Repositories hinzu:

    sudo add-apt-repository ppa:webupd8team/java
    
  2. Aktualisieren apt cachen und installieren oracle-java7:

    sudo apt update
    sudo apt install java-common oracle-java7-installer
    

    Während des Installationsvorgangs müssen Sie die Lizenz akzeptieren Oracle-Lizenz Zustimmung. Nach der Installation müssen wir Java-Umgebungsvariablen wie z JAVA_HOME

  3. Korrigiere Java-Umgebungsvariablen.

    sudo apt install oracle-java7-set-default
    source /etc/profile
    
  4. Überprüfen Sie, ob Java funktioniert:

    java -version
    

    was sollte etwas ähnliches ausgeben:

    java version "1.7.0_80"
    Java(TM) SE Runtime Environment (build 1.7.0_80-u80)
    Java HotSpot(TM) 64-Bit Server VM (build 25.131-u80, mixed mode)
    

0
2018-06-26 17:17



Das Oracle-Installationsprogramm funktioniert nicht mehr Verbindung zu download.oracle.com (download.oracle.com) | 184.51.150.144 |: 80 ... verbunden. HTTP-Anfrage gesendet, Antwort wartet ... 404 nicht gefunden - autonomy
Für Oracle JDK bietet das Unternehmen nicht an öffentliche Unterstützung für JDK 7 (sie bieten bezahlten Support). Ich denke der apt-get versucht, das Installationsprogramm von einer nicht vorhandenen Seite zu beziehen. - Wenn Sie JDK 7 benötigen, können Sie Installationsprogramme von der Archiv-Website herunterladen: oracle.com/technetwork/java/javase/downloads/... - Jaime


Oracle JDK-Alternative:

Ich wollte den Aufwand mit Repositories vermeiden, weil ich zwischen 7, 8 und 9 umschalte, also endete ich mit Oracle JDK und nicht mit OpenJDK. Heruntergeladen von die offizielle Seite. Ich bin mir nicht sicher, ob der neueste Build 80 die gleichen Fixes enthält wie der Build 161 von OpenJDK. Aber ich habe es für die Entwicklung, was mir sowieso nicht viel bedeutet.

Dann müssen Sie einstellen $JAVA_HOME in der Umgebung, so dass verschiedene Skripte das richtige JDK aufnehmen (z. B. Maven, JBoss usw.).

Der Vollständigkeit halber wurde JDK Version 7 sogar EOL'ed JDK 8 öffentliche Unterstützung wird seit September 2017 beendet und wird nach September 2018 keine öffentlichen Updates erhalten.


0
2017-11-19 16:58





Verwenden Sie Container

Dies ist eine allgemeingültige Antwort auf das Laufen <outdated> Software wurde entfernt <current> Ubuntu: containerisieren Sie Ihre Anwendung.

Verwenden Sie zum Beispiel Docker und ein älteres Ubuntu-Basis-Image, in dem die gesuchte Software noch verfügbar / gepflegt ist.

Es funktioniert auch umgekehrt; Probiere die Software auf einer neueren oder gar anderen Linux-Distribution auf deinem aktuell laufenden stabilen Ubuntu aus.

Beispiel für Java 7 mit Ubuntu 14.04

  1. Installieren Sie Docker - Docker CE kostenlose Version ist in Ordnung. Siehe zum Beispiel https://docs.docker.com/install/linux/docker-ce/ubuntu/ oder benutze die docker.io Paket in den letzten Ubuntu-Versionen ausgeliefert.

  2. Erstellen Sie in einem leeren Ordner eine Datei Dockerfile:

    FROM ubuntu:trusty
    RUN apt-get update \
        && apt-get install -y \
            openjdk-7-jdk \
        && rm -rf /var/lib/apt/lists/*
    
    ENTRYPOINT ["/usr/bin/java"]
    

    Fügen Sie weitere Pakete in diesem Befehl hinzu, wenn Sie dies benötigen.

  3. Führen Sie in diesem Ordner Folgendes aus:

    docker build -t gertvdijk/java7 .
    
  4. Führen Sie einen Befehl in einem Single-Use-Container mit diesem Java 7-Image aus:

    Z.B. java -version:

    docker run --rm -it gertvdijk/java7 -version
    

    Ausgabe:

    java version "1.7.0_181"
    OpenJDK Runtime Environment (IcedTea 2.6.14) (7u181-2.6.14-0ubuntu0.1)
    OpenJDK 64-Bit Server VM (build 24.181-b01, mixed mode)
    
  5. Optional können Sie aus praktischen Gründen einen Wrapper erstellen.

    • Erstellen Sie eine Datei /usr/local/bin/java7-in-docker mit Inhalt:

      #!/usr/bin/env sh -e
      
      DOCKER_IMAGE=gertvdijk/java7
      PWD="$(pwd)"
      
      exec docker run \
        --rm -it \
        -v ${PWD}:${PWD} \
        -v "/etc/passwd:/etc/passwd:ro" \
        -v "/etc/group:/etc/group:ro" \
        --user "$(id -u):$(id -g)" \
        --workdir "${PWD}" \
        "${DOCKER_IMAGE}" \
        $@
      

      Dadurch wird das aktuelle Arbeitsverzeichnis innerhalb des Containers verfügbar gemacht - nicht Ihr gesamtes Dateisystem und es wird die Identität Ihres lokalen Benutzerkontos im Container-Namespace angenommen.

    • Markiere es als ausführbar:

      sudo chmod +x /usr/local/bin/java7-in-docker
      
  6. Führen Sie Ihr Java 7 transparent wie folgt aus:

    java7-in-docker -jar relative/path/to/some.jar
    

0
2017-07-26 22:21





Eine Ergänzung zu MDMowers Antwort oben zur manuellen oder automatischen Installation. (*)

Auf Ubuntu 16.04.5 LTS mit hwe-16.04-Edge-Kernel und Cinnamon als DE habe ich bei der Installation / Aktualisierung von libfontconfig1 und seiner Abhängigkeit fontconfig-config ein unerwartetes Schriftverhalten festgestellt. Plötzlich hatte ich merkwürdige und dünne und kaum lesbare Mono-Space-Fonts und andere "hässliche" Fonts in vielen Anwendungsmenüleisten sowie in Terminalfenstern und an vielen anderen Stellen meiner Anwendungen.

Für den Fall, dass dieses Problem auftritt: Zur Laufzeit scheint es keine funktionierende Lösung zu geben. Kein Problem damit, Zeit damit zu verschwenden, nach einer Einstellung zu suchen, die die Voreinstellungen von Cinnamon oder Gnome oder FontConfig oder Ihres Terminals korrigiert (z. B. gconf-editor / gconftool, gnome-tweak-tool, fc *). Das hat keine Auswirkungen auf die "kaputten" Schriften. Es scheint, dass das Update von Fontconfig-Config irgendwie bekannte / zwischengespeicherte Verweise auf bestimmte Zeichensätze zurücksetzt und stattdessen einige Fallback-Zeichensätze gerendert werden, während immer noch auf die Zeichensätze mit ihrem ursprünglichen Namen Bezug genommen wird.

Starten Sie einfach Ihr System neu und alles ist wieder normal. Es genügt, wenn Sie sich ein- und ausloggen.


(*) Dies sollte eine Ergänzung oder ein Kommentar zur obigen Antwort von @MDMower sein, aber ungenügende StackExchange "Reputation" verbietet es mir, sie als Kommentar zu veröffentlichen. Meine Bearbeitung wurde abgelehnt (teilweise zu Recht), daher auch diese Spam-Antwort. Es tut uns leid. Ich würde mich freuen, wenn jemand mit genügend "Power" diese "Antwort" als Kommentar verschieben könnte, wo er hingehört. Vielen Dank!


0
2017-07-27 10:55





Ein einfacher Weg ist:

Fügen Sie diese Zeilen hinzu: /etc/apt/sources.list:

deb http://security.ubuntu.com/ubuntu trusty main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu trusty-security main restricted universe multiverse

Dann apt aktualisieren und installieren. Sie werden wahrscheinlich ein Downgrade durchführen müssen tzdata Paket.

Danach würde ich es empfehlen Diese Zeilen kommentieren und apt erneut aktualisieren, um die Installation oder Aktualisierung von Paketen aus diesem Repository zu verhindern (was zu unerwartetem Verhalten führen könnte).

Ein Problem besteht darin, dass Sie diese Pakete behalten müssen, damit sie nicht entfernt werden, wenn Sie Ihr System aktualisieren (speziell tzdata Paket).

HINWEIS: Verwenden Sie diese Methode als letzten Ausweg, bevorzugen Sie andere, die Sie ohne Probleme aktualisieren können.


-2
2017-12-05 09:29