Ubuntu: OpenJDK 8 - Impossibile individuare il pacchetto


95

Quindi ho appena installato Ubuntu, e questa è la prima volta che lavoro in un ambiente Linux, quindi sopporta la mia noobicità qui.

Ad ogni modo, ho scaricato Java 8 JDK direttamente da Oracle, ma ho capito che c'è anche un OpenJDK per Java 8. Ho due domande.

  1. Qual è la differenza tra la versione Oracle e OpenJDK. Pro e contro?

  2. Quando provo a ottenere OpenJDK 8, non posso. Sto incollando il comando del terminale e il messaggio di errore che ricevo qui, sperando in un consiglio. Ancora una volta, molto nuovo per Linux, sono stato sulla mia prima distribuzione Linux in assoluto per meno di un'ora qui a questo punto.

    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

Qualsiasi aiuto sarebbe apprezzato. Nel frattempo, userò solo il pacchetto Oracle. Grazie.

Modificare:

Quindi, ora ho un nuovo problema. Ho installato OpenJDK 7, è stato fornito con Maven e appena installato prima che mi rendessi conto che stavo ottenendo un due per uno. Ora ho JDK 7, Eclipse e Maven e funzionano tutti, ma sono bloccato su JDK 7 anziché 8.

Ho visto che sotto c'è un link, ho intenzione di controllarlo domattina, sono le 2 del mattino e sono stanco in questo momento. Qualunque altro consiglio per questo nuovo numero sarebbe apprezzato, altrimenti controllerò sicuramente quel link per prima cosa domattina.



Quale versione di Ubuntu utilizzi? Le ultime due versioni lo hanno reso disponibile come opzione di installazione.
Makoto

Il collegamento di Stephen risolverà il tuo problema :)
giugno

Grazie. Sono le 2 del mattino, quindi vado a letto, ma domattina controllerò il collegamento. Ho aggiunto una modifica alla mia domanda con un problema aggiuntivo, se potessi esaminarlo sarebbe fantastico. Se il collegamento / risposta esistente aiuterà anche in questo, mi scuso per essere troppo stanco per guardarlo in questo momento, lo controllerò domattina.
user2223059

Sono su Ubuntu 14.10 credo. Qualunque sia stata la versione più recente a lungo termine.
user2223059

Risposte:


122

AGGIORNAMENTO : installazione senza privilegi di root di seguito


Ti consiglio di non installare manualmente i pacchetti sul sistema ubuntu se esiste già un repository (semi-ufficiale) in grado di risolvere il tuo problema. Inoltre, usa Oracle JDK per lo sviluppo, solo per evitare (molto sporadici) problemi di compatibilità (ho provato molti anni fa, è sicuramente meglio ora).

Aggiungi il repository webupd8 al tuo sistema:

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

Installa la tua versione preferita di jdk (versioni da java-6 a java-9 disponibili):

sudo apt-get install oracle-java8-installer

Puoi anche installare più versioni di jdk, mescolando versioni di openjdk e oracle. Quindi puoi utilizzare il comando update-java-alternatives per passare dalla versione installata:

# 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

Requisiti

Se sei add-apt-repository: command not foundsicuro di aver software-properties-commoninstallato:

sudo apt-get install software-properties-common

Se stai usando una versione precedente di Ubuntu:

sudo apt-get install python-software-properties

Installazione JDK senza privilegi di root

Se non hai i diritti di amministratore sulla tua macchina di destinazione, la scommessa più semplice è usare sdkmanper installare openjdk certificato zulu:

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

NOTA : sdkman consente di installare anche il JDK Oracle ufficiale, sebbene non sia un'opzione predefinita. Visualizza le versioni disponibili con:

sdk ls java

Installa la versione scelta con:

sdk install java <version>

Per esempio:

sdk install java 9.0.1-oracle

Glossario dei comandi

  • sudo <command> [command_arguments] : esegue un comando con il privilegio di superutente.

  • add-apt-repository <PPA_id> : Ubuntu (proprio come ogni derivato Debian e in generale ogni distribuzione Linux) ha un repository principale di pacchetti che gestiscono cose come le dipendenze dei pacchetti e l'aggiornamento. In Ubuntu è possibile estendere il repository principale utilizzando un PPA (Personal Package Archive) che solitamente contiene pacchetti non disponibili nel sistema (proprio come oracle jdk) o versioni aggiornate di quelli disponibili (esempio: LibreOffice 5 in LTS è disponibile solo tramite questo PPA ).

  • apt-get [install|update|upgrade|purge|...] : è "il" gestore di pacchetti da riga di comando utilizzato per manipolare lo stato di ogni repository sul sistema (l'installazione / aggiornamento / upgrade può essere visto come un'alterazione dello stato corrente del repository).

Nel nostro caso : con il comando sudo add-apt-repository ppa:webupd8team/javainformiamo il sistema che al prossimo aggiornamento del repository dovrà recuperare le informazioni sui pacchetti anche dal repository webupd8.

Con sudo apt-get updateeffettivamente aggiorniamo il repository di sistema (tutte queste operazioni richiedono privilegi di superutente, quindi anteponiamo sudo ai comandi).

sudo apt-get install oracle-java8-installer

  • update-java-alternatives (una specifica versione java di update-alternatives ): in Ubuntu diversi pacchetti forniscono la stessa funzionalità (navigare in Internet, compilare messaggi di posta, modificare un file di testo o fornire eseguibili java / javac ...). Per il sistema consente di scegliere l'utensile preferiti dall'utente dato un compito specifico meccanismo utilizzando link simbolici sotto /etc/alternatives/viene utilizzato. Prova ad aggiornare jdk come indicato sopra (passa da java 7 a java 8) e guarda come modificare l'output di questo comando:

    ls -l /etc/alternatives/java*

Nel nostro caso : sudo update-java-alternatives --set java-8-oracleaggiorna i collegamenti simbolici in / etc / alternatives per puntare agli eseguibili java-8-oracle.

Extra:

  • man <command> : inizia a usare man per leggere un aiuto davvero ben scritto e dettagliato su (quasi) ogni comando di shell e le sue opzioni (ogni comando che menziono in questa piccola risposta ha una pagina man, prova man update-java-alternatives).

  • apt-cache search <search_key> : interroga la cache di APT per cercare un pacchetto correlato alla chiave_ricerca fornita (può essere il nome del pacchetto o qualche parola nella descrizione del pacchetto).

  • apt-cache show <package> : fornisce informazioni APT per un pacchetto specifico (versione del pacchetto, installato o meno, descrizione).


Il problema è che ricevo un messaggio "Impossibile individuare il pacchetto oracle-java8-installer". La stessa cosa accade quando provo a ottenere openjdk 8 usando il comando sudo apt-get.
user2223059

2
In particolare, questa è (almeno etichettata come) la versione commerciale Oracle di java, non la versione della comunità aperta (openjre).
ThorSummoner

1
@basZero: sembra è necessario installare proprietà del software: apt-get install software-properties-common. Di conseguenza aggiornerò il post per includere questo requisito. Grazie
Giuseppe Ricupero

1
Questa risposta non è valida: Oracle proibisce i download diretti del programma di installazione Java. sudo apt-get install oracle-java8-installer non riesce
Alec Istomin

2
Sto cercando di risolvere questo problema già da 4 ore. Grazie per questa fantastica soluzione!
ickyrr

109

Come puoi vedere ho installato solo java 1.7 (su una macchina Ubuntu 14.04).

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

Per installare Java 8, l'ho fatto,

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

In seguito, ora ho java 7 e 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 AGGIUNTO (come passare da una versione all'altra)

  • eseguire il seguente comando dal terminale:

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:

Come puoi vedere, sto eseguendo jdk 8. Per passare a jdk 7, premi 1e premi il Entertasto. Fai lo stesso javacanche con sudo update-alternatives --config javac,.

Controlla le versioni per confermare la modifica: java -versione javac -version.


2
Molto utile perché non sapevo quale repo fosse richiesto per installare OpenJDK! Molte grazie.
cram2208

@ cram2208 contento che ti abbia aiutato. grazie per il commento.
samsamara

Openjdk-r è abbastanza sicuro per il server?
Wang,

Grazie per la risposta dettagliata, questa soluzione funziona perfettamente per me.
Muddasir23

@ Muddasir23 contento che sia stato utile!
samsamara

13

Sto ottenendo OpenJDK 8 dai repository Debian ufficiali, piuttosto che da un PPA casuale o da un binario Oracle non libero. Ecco come l'ho fatto:

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

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

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

Fare /etc/apt/preferences.d/debian-jessie-backports:

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

Quindi finalmente esegui l'installazione:

sudo apt-get update
sudo apt-get -t jessie-backports install openjdk-8-jdk

1
E infine la finale update-alternatives --config java ;-)
Javali

Molte grazie! Questa è l'unica soluzione che ha funzionato per me (Deb 8)

3
sudo apt-get update
sudo apt-get  install openjdk-8-jdk

questo dovrebbe funzionare


Si prega di aggiungere una spiegazione di ciò che questo aggiunge alle risposte esistenti.
Gert Arnold,

Stavo usando WSL2 da Windows e ho dimenticato di aggiornare i pacchetti prima di installare OpenJDK e ho ricevuto lo stesso errore. @GertArnold, la risposta di Zoe mi ha aiutato in quello scenario.
pcdro

0

Stavo riscontrando lo stesso problema e ho provato tutte le soluzioni su questa pagina, ma nessuna di esse ha funzionato.

Ciò che alla fine ha funzionato è stato l'aggiunta del universerepository al mio elenco di repository. Per farlo, esegui il seguente comando

sudo add-apt-repository universe

Dopo aver eseguito il comando precedente, sono stato in grado di eseguire

sudo apt install openjdk-8-jre

senza problemi e il pacchetto è stato installato.

Spero che questo aiuti qualcuno.


Non sono sicuro del motivo per cui sono stato sottovalutato per questa risposta. Se c'è qualcosa di sbagliato o un potenziale problema, lascia un commento per aiutare gli altri e me a capire meglio.
Daniel Black,

0

Dopo aver aggiunto il JDKrepository, prima di installare potresti voler eseguire prima un aggiornamento in modo che il repository possa essere aggiunto run apt update

e quindi continuare con l'installazione sudo apt install adoptopenjdk-8-hotspot

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.