Bashをサポートしている最新のWindows 10ビルドでLinuxバージョンのOracle JDKを使用しようとすると、Java
バイナリを呼び出そうとするたびにプロンプトがハングする問題が発生します。
Java -version
のような単純なものでも入力するとハングし、制御を再開するにはプロセスを終了する必要があります。
誰もこれをまだ機能させていますか?
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をコピーできるようにします。
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
私は何かを見逃しているに違いない...私がしたことはすべて:
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
)が発生します。また、最初に必要なzipをダウンロードして、スクリプトと一緒に配置する方がはるかに簡単であることがわかりました。ここに私がしたことの完全なリストがあります:
bash
にSudo apt-get install Zip unzip
と入力して、bash
コンソールにunzip/Zipがインストールされていることを確認しますbash
にアクセスできるコンピューター注:ファイルがスクリプトで動作することを確認するためにファイル名を変更しないでください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
ファイルと同じフォルダーにあることを前提としています。
ファイルには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
Java_install_predownloaded_unix_final.sh
というファイルがWindowsの行末のない「クリーニング済み」バージョンのフォルダーにあるため、bash
で./Java_install_predownloaded_unix_final.sh
を実行し、マジックが発生するのを監視するだけです。 PrestoがWindows上のbashインスタンスにJavaをインストールしました!WSLのBuild#14316で、現在JDK8のインストールが機能していないようです。しかし、JDK7をインストールしようとしてもうまくいきました。現時点でこのインストールの制限を調査し、掲載し続けます。アイデアはここから来ました: https://github.com/Microsoft/BashOnWindows/issues/196
ここでは、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
このインストールを本当に強調する機会はまだありませんが、これは以前のハングよりも優れています。
Bash(Windows 10)にOracle JDK 8を新規インストールするために行った手順:
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 -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/
これは私のために働いた。しかし、これらの奇妙なリポジトリを追加するのは好きではありません。 Linux蜂起?マイクロソフトがそれを修正してくれたら素晴らしいでしょう。
Sudo add-apt-repository ppa:linuxuprising/Java
Sudo apt update
Sudo apt install Oracle-Java10-installer
insider Previewビルド14905では動作する可能性がありますが、Windows 10 Proビルド14393ではハングします。問題の大部分は、MicrosoftがUbuntu 14.0.4を使用していることです。 14.10以降は、おそらくJava 8をより適切にサポートするでしょう。
Java Oracleバージョンで問題が発生したようです。openJDKバージョンをダウンロードしましたが、現在は動作しています