web-dev-qa-db-ja.com

Linux用のWindowsサブシステムへのOracle JDKのインストール

Bashをサポートしている最新のWindows 10ビルドでLinuxバージョンのOracle JDKを使用しようとすると、Javaバイナリを呼び出そうとするたびにプロンプ​​トがハングする問題が発生します。

Java -versionのような単純なものでも入​​力するとハングし、制御を再開するにはプロセスを終了する必要があります。

誰もこれをまだ機能させていますか?

64
Saurabh Mishra

2016年12月9日の時点で、Windows 10のUbuntu BashにJava 8を確実にインストールでき、@ Karl Hortonが正しいことを明確にしたかったのです。

unzipをインストールする必要がありますSudo apt-get install unzip

このスクリプトをWindowsセッションのbashのどこかにコピーして、実行可能にします(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をコピーできるようにします。

60
fieldju

2017年8月には、@ noah-davidが示唆するように、解決策がより簡単になったようです。

“ WebUpd8”チームリポジトリ からOracle JDK 8をインストールできました。

手順 。リポジトリを追加するには:

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
59
raisercostin

私は何かを見逃しているに違いない...私がしたことはすべて:

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)
16
CraftyFella

@fieldjuで指定されたスクリプトを使用しましたが、彼はスクリプトが依存するいくつかのことを見逃しました。また、コンテンツをコピー/貼り付けすると、Windowsの行末/キャリッジリターン(/r)が発生します。また、最初に必要なzipをダウンロードして、スクリプトと一緒に配置する方がはるかに簡単であることがわかりました。ここに私がしたことの完全なリストがあります:

  1. bashSudo apt-get install Zip unzipと入力して、bashコンソールにunzip/Zipがインストールされていることを確認します
  2. Java JDKの最新のLinuxバージョンを Oracle Webサイト (私は64ビットシステムを使用しているため、「Linux x64」を選択しました)をダウンロードして、 bashにアクセスできるコンピューター注:ファイルがスクリプトで動作することを確認するためにファイル名を変更しないでください
  3. 無制限強度ポリシー を最後のZipと同じフォルダーに個別にダウンロードし、ファイル名をそのままにしておきます。
  4. 次のスクリプトをコピーしてメモ帳に貼り付け、Java_install_predownloaded.shとしてzipと同じフォルダーに保存します。

スクリプト:

#!/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の修正バージョンであり、zipが既にダウンロードされており、この.shファイルと同じフォルダーにあることを前提としています。

  1. ファイルにはWindowsのキャリッジリターンがあるため、それらを置き換える必要があります。そのため、bashJava_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の行末のない「クリーニング済み」バージョンのフォルダーにあるため、bash./Java_install_predownloaded_unix_final.shを実行し、マジックが発生するのを監視するだけです。 PrestoがWindows上のbashインスタンスにJavaをインストールしました!
7
AndroidNoob

WSLのBuild#14316で、現在JDK8のインストールが機能していないようです。しかし、JDK7をインストールしようとしてもうまくいきました。現時点でこのインストールの制限を調査し、掲載し続けます。アイデアはここから来ました: https://github.com/Microsoft/BashOnWindows/issues/196

5
Saurabh Mishra

ここでは、2016年8月16日にリリースされたWindows 10 Insider Build 14905に、Oracle JDKバージョン8u102、Linux用x64がインストール可能であることを確認しています。

ライセンスに同意した後、ここからダウンロード可能

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

このインストールを本当に強調する機会はまだありませんが、これは以前のハングよりも優れています。

5
Karl Horton

Bash(Windows 10)にOracle JDK 8を新規インストールするために行った手順:

  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 -versionを使用してJavaバージョンを確認すると、予想される出力は次のようになります。

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)

PSこれを書いている時点で、安定したバージョンのOracle 9 JDKがリリースされています。おそらく上記のステップ4を微調整することができます。


リファレンス: https://poweruphosting.com/blog/install-Java-ubuntu/

4
Keith OYS

これは私のために働いた。しかし、これらの奇妙なリポジトリを追加するのは好きではありません。 Linux蜂起?マイクロソフトがそれを修正してくれたら素晴らしいでしょう。

Sudo add-apt-repository ppa:linuxuprising/Java
Sudo apt update
Sudo apt install Oracle-Java10-installer
1
Sören

insider Previewビルド14905では動作する可能性がありますが、Windows 10 Proビルド14393ではハングします。問題の大部分は、MicrosoftがUbuntu 14.0.4を使用していることです。 14.10以降は、おそらくJava 8をより適切にサポートするでしょう。

0
Mike Selender

Java Oracleバージョンで問題が発生したようです。openJDKバージョンをダウンロードしましたが、現在は動作しています

0
Julien Richard