bashをサポートする最新のWindows10ビルドでLinuxバージョンのOracleのJDKを使用しようとすると、java
バイナリを呼び出そうとするとプロンプトがハングするという問題が発生します。
java -version
ハングするような単純なものでも入力すると、制御を再開するためにプロセスを終了する必要があります。
誰かがこれをまだ機能させましたか?
bashをサポートする最新のWindows10ビルドでLinuxバージョンのOracleのJDKを使用しようとすると、java
バイナリを呼び出そうとするとプロンプトがハングするという問題が発生します。
java -version
ハングするような単純なものでも入力すると、制御を再開するためにプロセスを終了する必要があります。
誰かがこれをまだ機能させましたか?
回答:
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をコピーさせてくれるようにライセンスを与えてください。
unzip
このスクリプトに必要なものを追加する必要があります(デフォルトではインストールされていないため)
sudo: unable to resolve host DESKTOP-6PMR0AI
友達のコンピューターで奇妙なホストの問題が発生します。
@ 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
sudo add-apt-repository ppa:webupd8team/java
私は何かが欠けているに違いありません...私がしたのは:
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)
sudo apt-get install default-jdk
のUbuntu 18.04でのWindows上で10 18.04を、それがOpenJDKの11をインストール
@fieldjuから提供されたスクリプトを使用しましたが、スクリプトが依存するいくつかのことを見逃しました。また、コンテンツをコピー/貼り付けすると、Windowsの行末/キャリッジリターン(/r
)が発生し、Linuxのリターンに置き換える必要があります。また、最初に必要なzipをダウンロードして、スクリプトと一緒に配置する方がはるかに簡単であることがわかりました。これが私がしたことの完全なリストです:
bash
、sudo apt-get install zip unzip
unzip / zipがbash
コンソールにインストールされていることを確認するために入力します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の行末のない「クリーンな」バージョンのフォルダーにあるため、実行./java_install_predownloaded_unix_final.sh
しbash
て魔法が発生するのを確認する必要があります。Prestoさん、WindowsのbashインスタンスにJavaがインストールされました。Bash(Windows 10)にOracle JDK8を新規インストールするために行った手順:
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)
PSこれを書いている時点で、安定バージョンのOracle 9 JDKがリリースされているので、おそらく上記のステップ4を微調整することができます。
WSLのBuild#14316では、現時点ではJDK8のインストールが機能していないようです。しかし、JDK7をインストールしようとしてもうまくいきました。現時点でこのインストールの制限を調査しており、投稿を続けます。アイデアはここから来ました:https://github.com/Microsoft/BashOnWindows/issues/196
ここで、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
このインストールを実際に強調する機会はまだありませんが、これは以前のハングよりも優れています。
多くの回答が、完全に優れた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_10
WSLでは/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は.exe
Windowsバイナリであるため、必要です。OpenJDKのLinuxディストリビューションを使用する場合、拡張機能は必要ありません。
私は同じ問題を抱えていましたが、1つのコマンドでそれを解決します:
sudo apt upgrade
次に、次の3つのコマンドを実行します。
sudo apt install default-jre
sudo apt install openjdk-11-jre-headless
sudo apt install openjdk-8-jre-headless
Java oracleバージョンで問題が発生したようです。openJDKバージョンをダウンロードしましたが、動作します。