在适用于Linux的Windows子系统上安装Oracle JDK

当试图在支持bash的最新Windows 10版本上使用Oracle JDK的Linux版本时,我遇到了一个挂起提示的问题,只要试图调用java二进制文件。

键入甚至像java -version一样简单的东西 – 版本挂起,我不得不终止进程来恢复控制。

任何人有这个工作呢?

我想澄清的是,截至2016年12月9日,您肯定可以在Windows 10的Ubuntu Bash上安装Java 8,而@Karl Horton是正确的。

你需要安装unzip sudo apt-get install unzip

将这个脚本复制到bash中的windows会话中,并使其可执行(chmod + x filename)。 如果你不使用基于命令行的编辑器,如vim,那么你将有窗口行结束处理。 你可以使用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月,解决scheme就像@noah-davidbuild议的那样简单。

我能够安装oracle jdk 8:

 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 

似乎安装JDK8目前不在WSL的Build#14316上工作。 但是试图安装JDK7对我来说工作得很好。 目前探索这个安装的限制,并将保持张贴。 想法从这里来: https : //github.com/Microsoft/BashOnWindows/issues/196

我使用@fieldju给出的脚本,但是他错过了脚本依赖的一些东西,并且复制/粘贴内容导致具有窗口行结尾/回车符( /r ),这将需要replace到Linux返回。 另外,我发现下载首先需要的拉链更加直接,并将它们放在脚本旁边。 以下是我所做的完整列表:

  1. bash ,键入sudo apt-get install zip unzip以确保在bash控制台上安装了unzip / zip
  2. 从oracle网站 (我有一个64位系统,所以我select了“Linux x64”)下载最新的Linux JDK版本,并将其保存在计算机上的某个文件夹中,您可以在bash获得注意:不要更改文件名以确保它与脚本一起工作
  3. 在最后一个zip文件所在的文件夹中单独下载无限强度策略 ,再次确保您保持文件名不变。
  4. 将以下脚本复制并粘贴到记事本中,并将其另存为java_install_predownloaded.sh ,并保存在与java_install_predownloaded.sh相同的文件夹中:

脚本:

 #!/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. 因为文件具有窗口回车您需要确保它们被replace,所以在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. 在运行这两行之后,一个名为java_install_predownloaded_unix_final.sh的文件将在我们的“清理”版本的文件夹中,而不是windows行尾,所以你只需要在bash执行./java_install_predownloaded_unix_final.sh并观察魔术的发生。 嘿Presto你现在有你的bash实例在Windows上安装的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) 

我在这里确认Oracle JDK Version 8u102,x64 for linux可以在2016年8月16日发布的Windows 10 Insider Build 14905上正常安装。

接受许可后,可从此处下载

 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安装

 $ 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的步骤如下:

  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 -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/

看来这个问题发生在java oracle版本,我已经下载了openJDK版本,现在它工作

它可能适用于内部预览版本14905,但挂在Windows 10 Pro版本14393上。问题的一个很好的部分是,微软正在使用Ubuntu 14.0.4。 14.10或更高版本可能会更好地支持Java 8。