Установка Oracle JDK на подсистему Windows для Linux
при попытке использовать Linux-версию JDK Oracle на последней сборке Windows 10, имеющей поддержку bash, у меня возникает проблема с зависанием подсказки при попытке вызвать java
бинарный.
набрав даже что-то простое, как java -version
зависает, и я должен завершить процесс, чтобы возобновить контроль.
у кого это работает?
10 ответов:
Я хотел уточнить, что по состоянию на 9 декабря 2016 года вы, безусловно, можете установить Java 8 на Ubuntu Bash для Windows 10 и что @Karl Horton правильно.
вам нужно будет установить распаковать
sudo apt-get install unzip
скопируйте этот скрипт где-нибудь в вашем сеансе bash for windows и сделайте его исполняемым (chmod +x filename). Если вы не используете редактор на основе командной строки, такой как vim, то у вас будут окончания строк windows для работы. вы можете использовать dos2unix или предпочтительный способ борьбы с этим. Я просто вставляю его в файл с помощью 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
и теперь я могу сделать следующее
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)
ссылки и версии в приведенном выше скрипте, вероятно, будут устаревшими к тому времени, когда вы прочтете это, поэтому просто перейдите к http://www.oracle.com/technetwork/java/javase/downloads/index.html принять лицензию, так что их js позволяет копировать новые URL-адреса, и вы должны быть хорошо идти.
кажется, в августе 2017 года решение проще, как предложил @noah-david.
я смог установить Oracle JDK 8 из репозиторий команды"WebUpd8".
- инструкции. Чтобы добавить репозиторий:
sudo add-apt-repository ppa:webupd8team/java sudo apt-get update
установка:
sudo apt-get install oracle-java8-installer sudo apt install oracle-java8-set-default
после установки
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
должно быть, я что-то упустил... все, что я сделал:
sudo apt-get update sudo apt-get install default-jdk java -version
выход:
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)
я использовал скрипт, заданный @fieldju, но он пропустил некоторые вещи, от которых зависит скрипт, а также копирование / вставка содержимого приводит к тому, что конец строки windows / возврат каретки (
/r
) который будет нуждаться в замене на linux возвращает. Кроме того, я обнаружил, что гораздо проще загрузить молнии, необходимые в первую очередь, и поместить их рядом со сценарием. Вот полный список того, что я сделал:
- на
bash
, типsudo apt-get install zip unzip
чтобы убедиться, что распаковать / zip установлен на вашемbash
консоль- загрузите последнюю версию Linux Java JDK из сайт oracle (у меня есть 64-битная система, поэтому я выбрал "Linux x64") и сохраните его в папке где-то на вашем компьютере, что вы можете получить в
bash
примечание: не меняйте имя файла, чтобы убедиться, что он работает со скриптом- скачать политика неограниченной силы отдельно в той же папке, что и последний zip, снова гарантируя, что вы сохраняете имя файла как есть.
- скопируйте и вставьте следующий скрипт в блокнот и сохраните его как
java_install_predownloaded.sh
в этой же папке рядом с молниями:сценарий:
#!/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
этот код является модифицированной версией из @fieldju, которая предполагает, что молнии уже загружены и находятся в той же папке, что и этот
.sh
file
поскольку файл имеет возврат каретки windows, вам нужно убедиться, что они заменены, поэтому в
bash
перейдите к где ты спасjava_install_predownloaded.sh
и выполните следующую команду:
sed 's/^M$//' java_install_predownloaded.sh > java_install_predownloaded_unix.sh
затем я также запустил следующее, чтобы убедиться, что в windows нет окончаний строк:
sed 's/\r$//' java_install_predownloaded_unix.sh > java_install_predownloaded_unix_final.sh
- после запуска этих 2 строк, файл называется
java_install_predownloaded_unix_final.sh
будет в папке, которая является нашей "очищенной" версией без окончания строки windows, поэтому вам просто нужно выполнить./java_install_predownloaded_unix_final.sh
наbash
и наблюдайте, как происходит волшебство. Эй Presto теперь у вас установлена java на вашем экземпляре bash в windows!
кажется, установка JDK8 не работает в данный момент на сборке#14316 WSL. Но попытка установить JDK7 отлично сработала для меня. Исследуя пределы этой установки на данный момент и будет держать в курсе. Идея пришла отсюда : https://github.com/Microsoft/BashOnWindows/issues/196
Я подтверждаю здесь, что Oracle JDK версии 8u102, x64 для linux можно установить ok на Windows 10 Insider Build 14905, выпущенный 16 августа 2016 года.
загружается отсюда после принятия лицензии
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
я следовал инструкциям здесь: 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
у меня еще не было возможности действительно подчеркнуть эту установку, но это лучше, чем предыдущие зависания.
шаги, которые я сделал для новой установки Oracle JDK 8 на моем 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
принять лицензии
ты молодец! Проверьте версию java с помощью
java -version
и ожидаемый результат должен быть примерно таким: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)
П. С. На момент написания этого, стабильная версия Oracle 9 JDK была выпущена, вы, вероятно, могли бы настроить Шаг 4 выше.
похоже, что проблема возникла с версией Java oracle, я загрузил версию openJDK и теперь она работает