Lorsque j'essaie d'utiliser la version Linux du JDK d'Oracle sur la dernière version de Windows 10 prenant en charge bash, je rencontre un problème avec le blocage de l'invite lorsque j'essaie d'appeler le binaire Java
.
Taper même quelque chose d'aussi simple que Java -version
se bloque et je dois terminer le processus pour reprendre le contrôle.
Quelqu'un a-t-il déjà travaillé?
Je voulais préciser qu'à partir du 9 décembre 2016, vous pourrez certainement installer Java 8 sur Ubuntu Bash pour Windows 10 et que @Karl Horton est correct.
Vous devrez installer unzip Sudo apt-get install unzip
Copiez ce script quelque part dans votre session bash pour Windows et rendez-le exécutable (chmod + x nom de fichier). Si vous n'utilisez pas d'éditeur basé sur la ligne de commande tel que vim, vous devrez gérer les fins de ligne de Windows. vous pouvez utiliser dos2unix ou votre manière préférée de gérer cela. Je viens de le coller dans un fichier en utilisant 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
Et maintenant je peux faire ce qui suit
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)
Les liens et les versions dans le script ci-dessus sont probablement obsolètes au moment où vous lisez ceci, alors dirigez-vous simplement vers http://www.Oracle.com/technetwork/Java/javase/downloads/index .html accepte la licence de sorte que leur js vous permette de copier les nouvelles URL et que vous soyez prêt à partir.
Il semble qu'en août 2017 la solution est plus simple, comme le suggère @ noah-david.
J'ai pu installer Oracle JDK 8 à partir de le référentiel de l'équipe "WebUpd8" .
Instructions . Pour ajouter le référentiel:
Sudo add-apt-repository ppa:webupd8team/Java
Sudo apt-get update
À installer:
Sudo apt-get install Oracle-Java8-installer
Sudo apt install Oracle-Java8-set-default
Après l'installation
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
Je dois manquer quelque chose ... tout ce que j'ai fait était:
Sudo apt-get update
Sudo apt-get install default-jdk
Java -version
sortie:
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)
J'ai utilisé le script donné par @fieldju, mais il a omis certaines choses dont dépend le script. De plus, copier/coller le contenu a pour résultat d'avoir des fins de lignes/des retours chariot (/r
) qui devront être remplacés par des retours linux. Aussi, j’ai trouvé beaucoup plus simple de télécharger d’abord les zips nécessaires et de les placer à côté du script. Voici une liste complète de ce que j'ai fait:
bash
, tapez Sudo apt-get install Zip unzip
pour vous assurer que la décompression/Zip est installée sur votre console bash
.bash
NOTE: ne changez pas le nom du fichier pour vous assurer qu'il fonctionne avec le scriptJava_install_predownloaded.sh
dans le même dossier, à côté des zips:Scénario:
#!/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
Ce code est une version modifiée de @fieldju qui suppose que les fichiers zip sont déjà téléchargés et dans le même dossier que ce fichier .sh
comme le fichier contient les retours chariot Windows, vous devez vous assurer qu'ils sont remplacés. Par conséquent, dans bash
, accédez à l'emplacement où vous avez enregistré Java_install_predownloaded.sh
et exécutez la commande suivante:
sed 's/^M$//' Java_install_predownloaded.sh > Java_install_predownloaded_unix.sh
J’ai également lancé ce qui suit pour s’assurer qu’il n’y a absolument aucune fin de ligne dans Windows:
sed 's/\r$//' Java_install_predownloaded_unix.sh > Java_install_predownloaded_unix_final.sh
Java_install_predownloaded_unix_final.sh
sera dans le dossier qui est notre version "nettoyée" sans les fins de ligne de Windows, il vous suffit donc d'exécuter ./Java_install_predownloaded_unix_final.sh
dans bash
et regarder la magie arriver. Hé, vous avez maintenant Java installé sur votre instance bash sous Windows!Il semble que l'installation de JDK8 ne fonctionne pas pour le moment sur la version 14316 du WSL. Mais essayer d'installer JDK7 a bien fonctionné pour moi. Explorer les limites de cette installation pour le moment et restera au courant. L'idée est venue d'ici: https://github.com/Microsoft/BashOnWindows/issues/196
Je confirme ici qu'Oracle JDK version 8u102, x64 pour Linux est installable sur Windows 10 Insider Build 14905, publié le 16 août 2016.
téléchargeable à partir d'ici après avoir accepté la licence
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
J'ai suivi les instructions ici: wikiHow Oracle Java Installer
$ 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
Je n'ai pas encore eu l'occasion d'insister sérieusement sur cette installation, mais c'est mieux que le précédent se bloque.
Les étapes que j'ai suivies pour une nouvelle installation d'Oracle JDK 8 sur mon lecteur Bash (Windows 10):
Sudo apt-get install python-software-properties
Sudo add-apt-repository ppa:webupd8team/Java
Sudo apt-get update
Sudo apt-get install Oracle-Java8-installer
Accepter les licences
Vous avez terminé! Vérifiez votre version Java avec Java -version
et le résultat attendu devrait ressembler à ceci:
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)
P.S. Au moment de la rédaction de cet article, la version stable d’Oracle 9 JDK étant sortie, vous pourriez probablement modifier l’étape 4 ci-dessus.
Référence: https://poweruphosting.com/blog/install-Java-ubuntu/
Cela a fonctionné pour moi. Bien que je n'aime pas ajouter ces dépôts étranges. Linuxuprising? Ce serait bien si Microsoft corrigeait cela.
Sudo add-apt-repository ppa:linuxuprising/Java
Sudo apt update
Sudo apt install Oracle-Java10-installer
cela peut fonctionner pour Insider Preview build 14905, mais se bloque sous Windows 10 Pro build 14393. Une bonne partie du problème est que Microsoft utilise Ubuntu 14.0.4. 14.10 ou une version ultérieure serait probablement mieux compatible avec Java 8.
Il semble que le problème se soit produit avec la version Java Oracle, j'ai téléchargé la version openJDK et cela fonctionne maintenant.