Подтвердить что ты не робот

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

При попытке использовать версию Linux JDK для Linux в последней версии Windows 10 с поддержкой bash у меня возникает проблема с зависанием приглашения при попытке вызвать двоичный файл java.

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

Кто-нибудь получил эту работу?

4b9b3361

Ответ 1

Я хотел уточнить, что с 9 декабря 2016 года вы, безусловно, можете установить Java 8 на Ubuntu Bash для Windows 10 и что @Karl Horton верен.

Вам нужно будет установить unzip sudo apt-get install unzip

Скопируйте этот script где-нибудь в свой Bash для сеанса 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

И теперь я могу сделать следующее

[email protected]:~$ 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)                                                

Ссылки и версии в приведенном выше script, вероятно, будут устаревать к тому моменту, когда вы прочтете это, поэтому просто перейдите к http://www.oracle.com/technetwork/java/javase/downloads/index.html принять лицензию, чтобы их js позволяли вам копировать новые URL-адреса, и вам должно быть хорошо, чтобы идти.

Ответ 2

Похоже, что в августе 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

После установки

[email protected]:/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)

[email protected]:/mnt/c/work$ which java
/usr/bin/java

[email protected]:/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

Ответ 3

Мне нужно что-то упустить... все, что я сделал, было:

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)

Ответ 4

Я использовал script, заданный @fieldju, но он пропустил некоторые вещи, от которых зависит script, а также копирование/вставка содержимого приводит к тому, что окончание строк/возврат каретки окон (/r), которые понадобятся заменяя на возвраты linux. Кроме того, я нашел гораздо более простой, чтобы загрузить необходимые почтовые индексы и разместить их рядом с script. Вот полный список того, что я сделал:

  • В bash введите sudo apt-get install zip unzip, чтобы убедиться, что uncip/zip установлен на консоли bash
  • Загрузите последнюю версию Linux Java JDK с сайта oracle (у меня 64-разрядная система, поэтому я выбрал "Linux x64" ) и сохраните его в папке где-то на вашем компьютере, к которой вы можете перейти в bash ПРИМЕЧАНИЕ. Не изменяйте имя файла, чтобы убедиться, что он работает с script
  • Загрузите неограниченную стратегию прочности отдельно в той же папке, что и последний zip, снова гарантируя, что вы сохраните имя файла как есть.
  • Скопируйте и вставьте следующий script в блокнот и сохраните его как java_install_predownloaded.sh в той же папке рядом с почтовыми индексами:

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

Этот код является модифицированной версией от @fieldju, которая предполагает, что почтовые индексы уже загружены и находятся в той же папке, что и этот .sh файл

  1. потому что файл имеет возврат каретки окон, вам необходимо убедиться, что они заменены, поэтому в bash перейдите туда, где вы сохранили java_install_predownloaded.sh, и выполните следующую команду:

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

Затем я также выполнил следующее, чтобы гарантировать отсутствие окончаний строк из окон:

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

  1. После запуска этих двух строк файл с именем java_install_predownloaded_unix_final.sh будет находиться в папке, которая является нашей "очищенной" версией без оконных окон, поэтому вам просто нужно выполнить ./java_install_predownloaded_unix_final.sh в bash и посмотреть волшебство бывает. Привет, Presto, у вас теперь есть java, установленный на вашем экземпляре bash на окнах!

Ответ 5

Кажется, что установка JDK8 в данный момент не работает на Build # 14316 WSL. Но попытка установить JDK7 отлично работала для меня. Исследуя пределы этой установки на данный момент и будем держать в курсе. Идея пришла отсюда: https://github.com/Microsoft/BashOnWindows/issues/196

Ответ 6

Здесь я подтверждаю, что Oracle JDK версии 8u102, x64 для linux хорошо устанавливается на 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

У меня еще не было шанса действительно подчеркнуть эту установку, но это лучше, чем предыдущие зависания.

Ответ 7

Шаги, которые я сделал для новой установки 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)

P.S. На момент написания этой статьи была выпущена стабильная версия Oracle 9 JDK, возможно, вы могли бы изменить шаг 4 выше.


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

Ответ 8

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

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

Ответ 9

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

Ответ 10

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

Ответ 11

У меня была такая же проблема, но я решаю ее одной командой:

sudo apt upgrade

затем запустите 3 команды:

sudo apt install default-jre
sudo apt install openjdk-11-jre-headless
sudo apt install openjdk-8-jre-headless