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


83

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

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

誰かがこれをまだ機能させましたか?


私はあなたが何をしようとしているのか本当にわかりません。利用可能なJDKのWindowsバージョンがあります-なぜLinuxバージョンを使用しているのですか?あなたがしていることについてもう少し教えていただけますか?
stdunbar 2016

また、オフィスにいる私たちの中にはWindows 10へのインストールに成功した人もいれば、ハングアップした人もいるので、知りたいと思います。
Tグレー

Oracle JDKは試していませんが、Ubuntu独自のopenjdk-jre-headlessをインストールすると、正常に動作します。たぶんOracleJDKは頭に依存していますが、bashはCLIだけですか?
speedogoo 2016

1
@Revomanは、github.com / Microsoft / BashOnWindows / issues / 49でディスカッションをチェックしてください。default-jdkの問題は解決されたようで、apt-getを試すことができます。また、/ procについて言及している問題は何ですか?
Saurabh Mishra 2016年

1
@SaurabhMishraは、これが現在可能であるため、選択した回答を調整できますか。
fieldju 2017年

回答:


88

2016年12月9日の時点で、Windows10用のUbuntuBashにJava8をインストールできること、および@KarlHortonが正しいことを明確にしたいと思います。

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

このスクリプトをbashfor Windowsセッションのどこかにコピーして、実行可能にします(chmod + xファイル名)。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をコピーさせてくれるようにライセンスを与えてください。


5
unzipこのスクリプトに必要なものを追加する必要があります(デフォルトではインストールされていないため)
River

sudo: unable to resolve host DESKTOP-6PMR0AI友達のコンピューターで奇妙なホストの問題が発生します。
samthebest 2017年


1
男、あなたは自動化の神です。:)
Pavel

このスクリプトは素晴らしいです。今日は2020年10月16日で、Windows / Ubuntuシェルにjdk8があります。
MAXdB

66

@ noah-davidが提案しているように、2017年8月の解決策はより単純なようです。

「WebUpd8」チームリポジトリからOracleJDK8をインストールできました。

指示。リポジトリを追加するには:

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

7
これが最善のアプローチであることに同意しました。オラクル-java8インストーラは、最初webupd8teamのPPAを追加する必要があります。sudo add-apt-repository ppa:webupd8team/java
kaliatech

リポジトリを追加すると、「PPAを追加できません: 'ppa:〜webupd8team / ubuntu / java'。エラー: '〜webupd8team'ユーザーまたはチームが存在しません。」が返されます。
ティム・ホルト

チームの名前のつづりを間違えたときに、@ TimHoltが同じメッセージを受け取りました。
LoicLacomme18年

存在しないというエラーもあるため、ユーザーが削除された可能性があります。
jcubic

11
オラクルのおかげで、これはなりませ参照-私はむしろ代わりに、このPPAを使用してのズールー族やCorrettoを使用する-彼らは2019年4月16日開始のライセンスを変更するともはや仕事linuxuprising.com/2019/04/...ズールー族のインストールに関する詳細については、 SDK
Agraj

42

私は何かが欠けているに違いありません...私がしたのは:

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)

5
これがどうあるべきかです!質問はを要求オラクルものの、JDK。あなたはインストールしているオープンJDKを。
テオドール2017年

2
Oracle JDKが必要な場合は、sudo apt-get install oracle-java8-installer
Sterling Bourne

また、これはWindows Subsystem forLinuxでは機能しません。または、Windows用のLinuxサブシステムですが、と呼ばれています。
ソレン

5
私はちょうど走ったsudo apt-get install default-jdkのUbuntu 18.04でのWindows上で10 18.04を、それがOpenJDKの11をインストール
ステファンローラー

default-jdkは最近11に設定されていますが、jdk8をインストールする必要がある場合はどうなりますか?
シラン

9

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

  1. bashsudo apt-get install zip unzipunzip / zipがbashコンソールにインストールされていることを確認するために入力します
  2. oracle Webサイトから最新のLinuxバージョンのJavaJDKをダウンロードし(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のキャリッジリターンが含まれているため、それらが置き換えられていることを確認する必要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.shbashて魔法が発生するのを確認する必要があります。Prestoさん、WindowsのbashインスタンスにJavaがインストールされました。

ところで、vimまたは選択したコマンドラインベースのエディターを使用してスクリプトを作成した場合、Windowsの行末は追加されません。ただし、メモ帳やその他のWindowsベースのエディターを使用している場合は、すべての項目に同意します。Windowsを再インストールしたばかりで、開発環境を元に戻すために自分の投稿を参照する必要がありました。:)
fieldju 2017年

6

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

  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. ライセンスを受け入れる

    画像

完了です。を使用して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)

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


参照:https//poweruphosting.com/blog/install-java-ubuntu/


5

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


1
私の賭けは、それが新しいJavaFX UIのもの(Java 8のデフォルトのランタイム)と関係があるということです。Java 7はJavaFXもサポートしていますが、jarはデフォルトではロードされません。
11101101b 2016

同じ問題に直面している人々のためのこれに対するステータスアップデートとして、それはWindowsUpdateによって解決されたようです。oracle-jdk8を問題なく実行することはできません。
ジョンジョーンズ

5

ここで、2016年8月16日にリリースされたWindows 10 Insider Build14905にOracleJDKバージョン8u102、x64 forlinuxがインストール可能であることを確認します。

ライセンスを受け入れた後、ここからダウンロード可能

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

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


インストール手順を試していませんが、webupd8team / javappaからインストールしても機能しません。
cheolho minale 2016

2

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

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

2

多くの回答が、完全に優れたWindows JDKを備えているにもかかわらず、LinuxJDKのインストールを推奨しています。WSLの美しさは、ファイルシステムが相互運用可能であるため、このようなことを行う必要がないことです。ファイル拡張子(以下に概説)を考慮に入れる限り、ニッチな状況で両方をインストールするだけで済みます。

簡単な方法

これ.bashrcは、Windows環境変数が正しく設定され、WSLがインストールされていることを前提として、ファイルに次のコード行を追加するだけで非常に簡単に実行できます。

# Shared environment variables
export JAVA_HOME=/mnt/d/Java/jdk11.0.4_10

JDKフォルダを指すようにディレクトリを変更してください。私の場合、D:\Java\jdk11.0.4_10WSLでは/mnt/d/Java/jdk11.0.4_10

また、Windowsバイナリを使用しているため、WSLbashシェルから実行する場合はファイルタイプを指定する必要があります。

呼び出しのWindowsからJDKを:

CMD

javac MyClass.java
java MyClass

WSL:

javac.exe MyClass.java
java.exe MyClass

注WSLは.exeWindowsバイナリであるため、必要です。OpenJDKのLinuxディストリビューションを使用する場合、拡張機能は必要ありません。


1

私は同じ問題を抱えていましたが、1つのコマンドでそれを解決します:

sudo apt upgrade

次に、次の3つのコマンドを実行します。

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


0

Insider Previewビルド14905で機能する可能性がありますが、Windows 10 Proビルド14393でハングします。問題の大部分は、MicrosoftがUbuntu14.0.4を使用していることです。14.10以降は、おそらくJava8をより適切にサポートします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.