Installazione di Oracle JDK sul sottosistema Windows per Linux


Quando si tenta di utilizzare la versione Linux di Oracle JDK sull'ultima build di Windows 10 con supporto per bash, mi imbatto in un problema con il prompt sospeso ogni volta che si tenta di richiamare il binario java.

Digitando anche qualcosa di semplice come java -version si blocca e devo terminare il processo per riprendere il controllo.

Qualcuno ha ottenuto questo lavoro ancora?

Author: River, 2016-04-07

10 answers

Volevo chiarire che a partire dal 9 dicembre 2016, è sicuramente possibile installare Java 8 su Ubuntu Bash per Windows 10 e che @Karl Horton è corretto.

Sarà necessario installare decomprimere sudo apt-get install unzip

Copia questo script da qualche parte nella tua sessione bash for Windows e rendilo eseguibile (chmod +x filename). Se non si utilizza un editor basato su riga di comando come vim, si avranno terminazioni di riga di Windows da gestire. è possibile utilizzare dos2unix o il vostro modo preferito di trattare con quello. Lo incollo in un file usando vim.

 #!/bin/bash

set -ex

# UPDATE THESE URLs
export JDK_URL=http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz
export UNLIMITED_STRENGTH_URL=http://download.oracle.com/otn-pub/java/jce/8/jce_policy-8.zip

# Download Oracle Java 8 accepting the license
wget --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" \
${JDK_URL}
# Extract the archive
tar -xzvf jdk-*.tar.gz
# clean up the tar
rm -fr jdk-*.tar.gz
# mk the jvm dir
sudo mkdir -p /usr/lib/jvm
# move the server jre
sudo mv jdk1.8* /usr/lib/jvm/oracle_jdk8

# install unlimited strength policy
wget --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" \
${UNLIMITED_STRENGTH_URL}
unzip jce_policy-8.zip
mv UnlimitedJCEPolicyJDK8/local_policy.jar /usr/lib/jvm/oracle_jdk8/jre/lib/security/
mv UnlimitedJCEPolicyJDK8/US_export_policy.jar /usr/lib/jvm/oracle_jdk8/jre/lib/security/

sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/oracle_jdk8/jre/bin/java 2000
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/oracle_jdk8/bin/javac 2000

sudo echo "export J2SDKDIR=/usr/lib/jvm/oracle_jdk8
export J2REDIR=/usr/lib/jvm/oracle_jdk8/jre
export PATH=$PATH:/usr/lib/jvm/oracle_jdk8/bin:/usr/lib/jvm/oracle_jdk8/db/bin:/usr/lib/jvm/oracle_jdk8/jre/bin
export JAVA_HOME=/usr/lib/jvm/oracle_jdk8
export DERBY_HOME=/usr/lib/jvm/oracle_jdk8/db" | sudo tee -a /etc/profile.d/oraclejdk.sh

E ora posso fare quanto segue

fieldju@DESKTOP-LTL6MIC:~$ java -version
java version "1.8.0_112"
Java(TM) SE Runtime Environment (build 1.8.0_112-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.112-b15, mixed mode)                                                

È probabile che i collegamenti e le versioni nello script precedente non siano aggiornati al momento di leggere questo, quindi vai a http://www.oracle.com/technetwork/java/javase/downloads/index.html accetta la licenza in modo che il loro js ti permetta di copiare i nuovi URL e dovresti essere a posto.

 52
Author: fieldju, 2017-05-31 02:59:45

Sembra che in agosto 2017 la soluzione sia più semplice come suggerito da @ noah-david.

Sono stato in grado di installare Oracle JDK 8 dal repository del team "WebUpd8" .

Istruzioni. Per aggiungere il repository:

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

Per installare:

sudo apt-get install oracle-java8-installer 
sudo apt install oracle-java8-set-default

Dopo l'installazione

costin@amanta-win:/mnt/c/work$ java -version
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)

costin@amanta-win:/mnt/c/work$ which java
/usr/bin/java

costin@amanta-win:/mnt/c/work$ uname -a
Linux amanta-win 4.4.0-43-Microsoft #1-Microsoft Wed Dec 31 14:42:53 PST 2014 
  x86_64 x86_64 x86_64 GNU/Linux
 43
Author: raisercostin, 2017-12-28 15:54:46

Devo essermi perso qualcosa... tutto quello che ho fatto è stato:

sudo apt-get update
sudo apt-get install default-jdk

java -version

Uscita:

java version "1.7.0_131"
OpenJDK Runtime Environment (IcedTea 2.6.9) (7u131-2.6.9-0ubuntu0.14.04.2)
OpenJDK 64-Bit Server VM (build 24.131-b00, mixed mode)
 11
Author: CraftyFella, 2017-06-01 13:36:48

Ho usato lo script dato da @fieldju ma ha perso alcune cose da cui dipende lo script, e anche copiare/incollare il contenuto risulta avere terminazioni di riga di Windows/ritorni a capo (/r) che dovranno essere sostituiti ai ritorni di linux. Inoltre, ho trovato molto più semplice scaricare prima le cerniere necessarie e metterle a fianco dello script. Ecco un elenco completo di quello che ho fatto:

  1. In bash, digitare sudo apt-get install zip unzip per assicurarsi che unzip / zip sia installato sul bash console
  2. Scarica l'ultima versione Linux di Java JDK dal sito web oracle (ho un sistema a 64 bit quindi ho scelto "Linux x64") e salvalo in una cartella da qualche parte sul tuo computer che puoi raggiungere in bash NOTA: non cambiare il nome del file per assicurarti che funzioni con lo script
  3. Scarica il unlimited strength policy separatamente nella stessa cartella dell'ultimo zip, assicurandoti di mantenere il nome del file così com'è.
  4. Copia e incolla quanto segue script nel blocco note e salvalo come java_install_predownloaded.sh nella stessa cartella accanto alle cerniere:

Script:

#!/bin/bash

# Extract the archive
tar -xzvf jdk-*.tar.gz

# mk the jvm dir
sudo mkdir -p /usr/lib/jvm
# move the server jre
sudo mv jdk1.8* /usr/lib/jvm/oracle_jdk8

# install unlimited strength policy
mv UnlimitedJCEPolicyJDK8/local_policy.jar /usr/lib/jvm/oracle_jdk8/jre/lib/security/
mv UnlimitedJCEPolicyJDK8/US_export_policy.jar /usr/lib/jvm/oracle_jdk8/jre/lib/security/

sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/oracle_jdk8/jre/bin/java 2000
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/oracle_jdk8/bin/javac 2000

sudo echo "export J2SDKDIR=/usr/lib/jvm/oracle_jdk8
export J2REDIR=/usr/lib/jvm/oracle_jdk8/jre
export PATH=$PATH:/usr/lib/jvm/oracle_jdk8/bin:/usr/lib/jvm/oracle_jdk8/db/bin:/usr/lib/jvm/oracle_jdk8/jre/bin
export JAVA_HOME=/usr/lib/jvm/oracle_jdk8
export DERBY_HOME=/usr/lib/jvm/oracle_jdk8/db" | sudo tee -a /etc/profile.d/oraclejdk.sh

Questo codice è una versione modificata da @ fieldju che presuppone che le zip siano già scaricate e nella stessa cartella di questo file .sh

  1. Poiché il file ha i ritorni a capo di Windows è necessario assicurarsi che vengano sostituiti, quindi in bash passare al punto in cui è stato salvato java_install_predownloaded.sh ed eseguire quanto segue comando:

    sed 's/^M$//' java_install_predownloaded.sh > java_install_predownloaded_unix.sh

Ho anche eseguito quanto segue per assicurarmi che non ci siano sicuramente terminazioni di riga da Windows:

sed 's/\r$//' java_install_predownloaded_unix.sh > java_install_predownloaded_unix_final.sh

  1. Dopo aver eseguito quelle 2 righe, un file chiamato java_install_predownloaded_unix_final.sh si troverà nella cartella che è la nostra versione "pulita" senza le terminazioni della riga di Windows, quindi devi solo eseguire ./java_install_predownloaded_unix_final.sh in bash e guardare la magia accadere. Hey Presto ora hai java installato sulla tua istanza bash su Windows!
 7
Author: AndroidNoob, 2017-05-19 15:44:40

Sembra che l'installazione di JDK8 non funzioni al momento sulla Build#14316 di WSL. Ma provare a installare JDK7 ha funzionato bene per me. Esplorare i limiti di questa installazione in questo momento e sarà mantenere pubblicato. L'idea è venuta da qui: https://github.com/Microsoft/BashOnWindows/issues/196

 5
Author: Saurabh Mishra, 2016-04-16 06:11:56

Confermo qui che Oracle JDK Versione 8u102, x64 per linux è installabile ok su Windows 10 Insider Build 14905, rilasciato il 16 agosto 2016.

Scaricabile da qui dopo aver accettato la licenza

C:\>systeminfo | findstr /B /C:"OS Name" /C:"OS Version"
OS Name:                   Microsoft Windows 10 Pro Insider Preview
OS Version:                10.0.14905 N/A Build 14905

Ho seguito le istruzioni qui: wikiHow Oracle Java Install

$ java -version
java version "1.8.0_102"
Java(TM) SE Runtime Environment (build 1.8.0_102-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode)

$ javac -version
javac 1.8.0_102

Non ho ancora avuto la possibilità di sottolineare davvero questa installazione, ma questo è meglio dei blocchi precedenti.

 4
Author: Karl Horton, 2016-08-22 01:57:39

I passaggi che ho fatto per una nuova installazione di Oracle JDK 8 sul mio Bash (Windows 10):

  1. sudo apt-get install python-software-properties
  2. sudo add-apt-repository ppa:webupd8team/java
  3. sudo apt-get update
  4. sudo apt-get install oracle-java8-installer
  5. Accetta licenze

    Immagine

Il gioco è fatto! Controlla la tua versione java usando java -version e l'output previsto dovrebbe essere qualcosa del genere:

java version "1.8.0_151"
Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)

Post scriptum Al momento della stesura di questo, è stata rilasciata la versione stabile Oracle 9 JDK, probabilmente potresti modificare il passaggio 4 sopra.


Riferimento: https://poweruphosting.com/blog/install-java-ubuntu /

 3
Author: Keith OYS, 2017-10-24 03:45:01

Sembra che il problema si sia verificato con la versione di java oracle, ho scaricato la versione di OpenJDK e ora funziona

 0
Author: Julien Richard, 2016-08-03 16:00:46

Potrebbe funzionare per Insider Preview build 14905, ma si blocca su Windows 10 Pro build 14393. Una buona parte del problema è che Microsoft sta usando Ubuntu 14.0.4. 14.10 o versioni successive probabilmente supportano meglio Java 8.

 0
Author: Mike Selender, 2016-09-25 18:45:31

Questo ha funzionato per me. Tuttavia, non mi piace aggiungere questi strani repository. Linuxuprising? Sarebbe bello se Microsoft avrebbe risolvere il problema.

sudo add-apt-repository ppa:linuxuprising/java
sudo apt update
sudo apt install oracle-java10-installer
 0
Author: Sören, 2018-06-14 18:35:59