Установка Oracle JDK на подсистему Windows для Linux


при попытке использовать Linux-версию JDK Oracle на последней сборке Windows 10, имеющей поддержку bash, у меня возникает проблема с зависанием подсказки при попытке вызвать java бинарный.

набрав даже что-то простое, как java -version зависает, и я должен завершить процесс, чтобы возобновить контроль.

у кого это работает?

10 57

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 возвращает. Кроме того, я обнаружил, что гораздо проще загрузить молнии, необходимые в первую очередь, и поместить их рядом со сценарием. Вот полный список того, что я сделал:

  1. на bash, тип sudo apt-get install zip unzip чтобы убедиться, что распаковать / zip установлен на вашем bash консоль
  2. загрузите последнюю версию Linux Java JDK из сайт oracle (у меня есть 64-битная система, поэтому я выбрал "Linux x64") и сохраните его в папке где-то на вашем компьютере, что вы можете получить в bash примечание: не меняйте имя файла, чтобы убедиться, что он работает со скриптом
  3. скачать политика неограниченной силы отдельно в той же папке, что и последний zip, снова гарантируя, что вы сохраняете имя файла как есть.
  4. скопируйте и вставьте следующий скрипт в блокнот и сохраните его как 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

  1. поскольку файл имеет возврат каретки 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

  1. после запуска этих 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):

  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. принять лицензии

    Image

ты молодец! Проверьте версию 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 выше.


ссылка:https://poweruphosting.com/blog/install-java-ubuntu/

похоже, что проблема возникла с версией Java oracle, я загрузил версию openJDK и теперь она работает

Он может работать для Insider Preview build 14905, но зависает на Windows 10 Pro build 14393. Хорошая часть проблемы заключается в том, что Microsoft использует Ubuntu 14.0.4. 14.10 или более поздняя версия, вероятно, лучше поддерживает Java 8.

это сработало для меня. Хотя, мне не нравится добавлять эти странные репозитории. Linuxuprising? Было бы здорово, если бы Microsoft исправила это.

sudo add-apt-repository ppa:linuxuprising/java
sudo apt update
sudo apt install oracle-java10-installer