Raspberry Pi – Java

L’autore declina ogni responsabilità per eventuali danni di qualsiasi genere derivanti direttamente o indirettamente dall’uso delle informazioni contenute in quest’articolo.

Le versioni di Java presenti nei repository APT di Raspbian possono essere obsolete o comunque inadeguate alle proprie esigenze, pertanto può essere desiderabile installarne altre. In questi casi, per consentire di volta in volta una selezione agevole della versione attiva, occorre tenere opportunamente aggiornate le alternative dei vari eseguibili di ciascun Java Development Kit (JDK) in modo da poter poi utilizzare l’utility update-java-alternatives, inclusa in Raspbian.

Oracle JDK

Le istruzioni che seguono si riferiscono alla versione 7u75 che è l’ultima versione di Java 7 rilasciata pubblicamente da Oracle per ARM, ma possono essere adattate ad altre versioni sostituendo 7 e 1.7.0_75 con la versione di interesse.

  1. Scaricare dal sito oracle.com una versione del JDK per Linux ARM in formato tar.gz. La versione JDK 7 più recente è la 7u75 Linux ARM v6/v7 Hard Float ABI. Per effettuare il download può essere richiesto un account Oracle gratuito.
  2. Decomprimere l’archivio nel percorso /usr/lib/jvm/ in modo che ne risulti un’alberatura del tipo /usr/lib/jvm/jdk1.7.0_75/:
    1. Recarsi nella directory contenente l’archivio tar.gz scaricato.
    2. sudo tar xzvf jdk-7u75-linux-arm-vfp-hflt.tar.gz -C /usr/lib/jvm
  3. Creare un link simbolico (alias) per questa versione di Java:
    1. cd /usr/lib/jvm
    2. sudo ln -nsf jdk1.7.0_75 java-7-oracle
  4. Creare il file jinfo (richiesto da update-java-alternatives) e le alternative per gli eseguibili; notare che il valore 1071 rappresenta la priorità e può essere modificato a piacimento (valori tipici sono: 1071 per JDK 7, 1081 per JDK 8):
    1. cd java-7-oracle
    2. sudo mkdir .alternatives && cd .alternatives
    3. sudo wget https://git.io/fAv4G -O alternatives.java
    4. sudo ../bin/javac alternatives.java
    5. sudo ../bin/java alternatives .. /usr/lib/jvm/java-7-oracle 1071
    6. sudo cp -i .java-*-oracle.jinfo /usr/lib/jvm/
    7. sudo ./install-alternatives.sh
  5. In caso di disinstallazione ovvero prima di installare una versione aggiornata, al fine di rimuovere le alternative che altrimenti resterebbero appese (consigliato), si può eseguire il seguente comando che elimina le stesse alternative precedentemente create da install-alternatives.sh:
    sudo /usr/lib/jvm/java-7-oracle/.alternatives/remove-alternatives.sh

BellSoft Liberica JDK

Liberica è un’implementazione di Java per Raspberry Pi totalmente open source. È compilata a partire da OpenJDK, cui BellSoft contribuisce. Le istruzioni che seguono si riferiscono alla versione 9.0.4 ma possono essere adattate ad altre versioni sostituendo 9 e 9.0.4 con la versione di interesse.

  1. Scaricare dal sito bell-sw.com > Get Liberica JDK una versione del JDK per Linux ARMv7&8 32 Bit HardFloat in formato deb:
    1. cd ~/Downloads
    2. wget https://github.com/bell-sw/Liberica/releases/download/9.0.4/bellsoft-jdk9.0.4-linux-arm32-vfp-hflt.deb
  2. sudo apt install ./bellsoft-jdk9.0.4-linux-arm32-vfp-hflt.deb
  3. Creare un link simbolico (alias) per questa versione di Java:
    1. cd /usr/lib/jvm
    2. sudo ln -nsf jdk-9.0.4-bellsoft-arm32-vfp-hflt java-9-bellsoft
  4. Determinare la priorità delle alternative create durante l’installazione:
    1. update-alternatives --display java
    2. Identificare la riga corrispondente al JDK appena installato e la relativa priorità, in questo caso:
      /usr/lib/jvm/jdk-9.0.4-bellsoft-arm32-vfp-hflt/bin/java - priority 1901
  5. Creare il file jinfo (richiesto da update-java-alternatives) utilizzando la priorità predeterminata:
    1. cd java-9-bellsoft
    2. sudo mkdir .alternatives && cd .alternatives
    3. sudo wget https://git.io/fAv4G -O alternatives.java
    4. sudo ../bin/javac alternatives.java
    5. sudo ../bin/java alternatives .. /usr/lib/jvm/java-9-bellsoft 1901
    6. sudo cp -i .java-*-bellsoft.jinfo /usr/lib/jvm/
  6. Cancellare l’archivio originale per recuperare spazio (facoltativo): rm ~/Downloads/bellsoft-jdk9.0.4-linux-arm32-vfp-hflt.deb

Per impostare la versione di Java attiva, utilizzare update-java-alternatives:

  1. Elenco versioni installate: update-java-alternatives -l
    java-10-bellsoft               1904       /usr/lib/jvm/java-10-bellsoft
    java-1.6.0-openjdk-armhf       1057       /usr/lib/jvm/java-1.6.0-openjdk-armhf
    java-7-oracle                  1071       /usr/lib/jvm/java-7-oracle
    java-8-oracle                  1081       /usr/lib/jvm/java-8-oracle
    java-9-bellsoft                1901       /usr/lib/jvm/java-9-bellsoft
    jdk-7-oracle-arm-vfp-hflt      317        /usr/lib/jvm/jdk-7-oracle-arm-vfp-hflt
    jdk-8-oracle-arm32-vfp-hflt    318        /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt
  2. Selezione della versione desiderata: sudo update-java-alternatives -s java-7-oracle
  3. Eventuali errori non pregiudicano il buon esito dell’operazione:
    update-alternatives: error: no alternatives for jmc
    update-alternatives: error: no alternatives for jvisualvm
    update-alternatives: error: no alternatives for mozilla-javaplugin.so
  4. Per verificare quale versione è stata effettivamente impostata: java -version
    java version "1.7.0_75"
    Java(TM) SE Runtime Environment (build 1.7.0_75-b13)
    Java HotSpot(TM) Client VM (build 24.75-b04, mixed mode)
    

È consigliabile creare un link simbolico al JDK preferito e impostare la variabile d’ambiente JAVA_HOME, ad esempio:

  1. cd /usr/lib/jvm
  2. sudo ln -nsf java-7-oracle default-java
  3. echo 'JAVA_HOME="/usr/lib/jvm/default-java"' | sudo tee -a /etc/environment

Lascia un commento

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.