如何在14.04 LTS上安装OpenJDK 8?


306

现在,根据http://openjdk.java.net/projects/jdk8/可以使用Java 8 ,但是http://openjdk.java.net/install/尚未提及如何在Linux上安装OpenJDK 8(不是Oracle Java)。 Ubuntu 14.04长期支持。(对于14.10及更高版本,请运行apt-get install openjdk-8-jdk

如何以及何时才能完成?

(2017-08-08:非常简短的答案是: 截至2017-08-08的OpenJDK 8尚未作为Ubuntu 14.04的APT软件包从官方存储库中正式提供。 请参阅此答案的完整摘要

注意:目前,我们将使用Oracle Java-对我来说,最佳解决方案是从Ubuntu存储库中获得OpenJDK,直到直接从Ubuntu存储库中轻松获得Oracle Java。



1
您需要自己编译。方法如下:github.com/hgomez/obuildfactory/wiki/…更改文件名以匹配版本8 ;-)
Rinzwind 2014年

2
Azul已开始提供名称为“ Zulu”的OpenJDK构建,该构建可以自动下载,解压缩和使用。(他们从支持中赚钱)。 azulsystems.com/products/zulu/downloads –ThorbjørnRavn
Andersen

1
值得注意的是,apt-fast for trusty托管的同一ppa ppa:saiarcot895/myppa具有openjdk-8的版本。耸耸肩
ThorSummoner

随着时间的流逝,似乎最简单的解决方案就是在可用时升级16.04 LTS。
托尔比约恩Ravn的安德森

Answers:


277

您可以这样做;

最终更新

JDK

sudo apt-get install openjdk-8-jdk

杰瑞

sudo apt-get install openjdk-8-jre

旧更新

我找到了两个存储库,但不推荐

  • OpenJDK构建(所有架构)

    ppa:openjdk-r/ppa
  • OpenJDK 8 backport值得信赖

    ppa:jochenkemnade/openjdk-8

原始信息

如果您真的想使用OpenJDK,则必须从源代码进行编译。OpenJDK仍然没有任何PPA。

已在https://bugs.launchpad.net/ubuntu/+bug/1297065中请求

我建议您使用Webup8 Oracle Java8 Installer

sudo add-apt-repository ppa:webupd8team/java -y
sudo apt-get update
sudo apt-get install oracle-java8-installer

自动设置Java 8环境变量

sudo apt-get install oracle-java8-set-default

核实

java -version

因此,您必须等待使用OpenJDK8


8
@JohnMerlino我的猜测是PPA允许在发布新版本时自动更新。
托尔比约恩Ravn的安德森

7
openjdk-8现在在Utopic中。 bugs.launchpad.net/ubuntu/+source/openjdk-8/+bug/1341628已经提高到反向移植到14.04,因为它是LTS:
托尔比约恩Ravn的安德森

56
为什么要进行新的编辑?它似乎仍不在14.04仓库中sudo apt-get install openjdk-8-jdk,至少对我来说不起作用。
xji 2015年

17
从2016年1月11日起,仍需要非官方的Ubuntu PPA,因为OpenJDK 8尚未进入反向移植。我认为这不是我的问题的答案,即使其他人看来也是如此。
托尔比约恩Ravn的安德森

8
该答案由于不完整而极易产生误导,它表示不推荐所提及的PPA,但没有PPA则无法使用。
Reinier Post

176
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-8-jdk
sudo update-alternatives --config java
sudo update-alternatives --config javac

7
该存储库已过时;截至今天最新的OpenJDK的1.8版本是66。在此存储库中的版本是45
mattm

无法获取ppa.launchpad.net/openjdk-r/ppa/ubuntu/pool/main/o/openjdk-8/…502 apt-cacher:libcurl错误:从对等方接收数据时失败
Rajesh Hatwar,2016年

1
这些是正确的最小步骤。4和5是可选的,可能不是必需的。
航空

不适用于Ubuntu 14.04E: Package 'openjdk-8-jdk' has no installation candidate
天真,

这在升级Jenkins时对我有用(新版本需要Java8,我的系统仅安装了Java7)。值得注意的是,第四行对于让詹金斯表现得正常很关键。直到运行它,我一直在获取Jenkins requires Java8 or later, but you are running 1.7.0_121-b00 from /usr/lib/jvm/java-7-openjdk-amd64/jre。祝您投票愉快,如果可以的话,我会给您更多。
Doktor J

62

OpenJDK 8于2014年3月发布。截至提出此问题时,任何Ubuntu版本的官方Ubuntu存储库中都没有OpenJDK 8软件包。正如“ JDK 8项目”页面所说,它们“将很快可用”,以定义一些“很快”。

首先,OpenJDK 8软件包将包含在Ubuntu开发版本中。在14.10开发周期中可能会发生这种情况,但是据我所知,还没有设定时间表。已经构建了一些预览包并可以进行测试,请参阅debian-java和Ubuntu openjdk邮件列表上的公告。在某些时候,这些软件包将被上传到Debian和Ubuntu开发存储库。

一旦OpenJDK 8处于Ubuntu开发版本中,则可能有可能要求将其反向移植到14.04。请注意,它永远不会在主trusty存储库中提供,但是如果您使用trusty-backports它,则有时可以从那里安装它。在此处阅读有关在Ubuntu中请求反向移植的过程的信息


4
我试图用您似乎想要的约束来回答“如何以及何时”的问题:必须来自官方存储库,必须来自OpenJDK,并且必须是14.04 LTS版本。
Mike Miller

30
其2016年2月版本和Java 8在Ubuntu 14.04 LTS上仍然不可用。这真令人失望。
Bhavin Doshi

2
这是2016年4月,仍然没有Java 8 ...
Stephan Henningsen

3
Ubuntu 16.04将于2016年4月发布,它将具有OpenJDK 8
Mike Miller

8
这是2016年9月,直到2019年仍将支持Ubuntu 14.04 LTS。由于大规模更改(例如systemd),很多地方采用16.04将花费很长时间,因此仍然令人失望Java 8通过apt在14.04上安装:(
geerlingguy

34

注–这仅适用于14.10或更高版本

迟到了1年,但与apt-get一样,今天可以正常使用。

要安装JDK:

$ sudo apt-get install openjdk-8-jdk

要安装JRE:

$ sudo apt-get install openjdk-8-jre

如何设置默认的JDK

最快的方法

运行$ sudo update-alternatives --config java并输入您要使用的JDK的编号。

第二种方式

列出可用的JDK:

$ update-java-alternatives -l
java-1.7.0-openjdk-amd64 1071 /usr/lib/jvm/java-1.7.0-openjdk-amd64
java-1.8.0-openjdk-amd64 1069 /usr/lib/jvm/java-1.8.0-openjdk-amd64

现在,复制并粘贴Open JDK 8的位置以匹配以下命令:

$ sudo update-java-alternatives -s /usr/lib/jvm/java-1.8.0-openjdk-amd64

3
在sudo apt-get更新之后,我的Linux 14.04上仍然只看到JDK 6和7,没有openjdk-8-jdk。您是否添加了一些特殊的存储库?我启用了可信任的反向移植。
akauppi

2
我认为您正在运行14.10或15.04,不是吗?
akauppi

1
我无法在14.04 LTS上复制。请确认这是版本。
托尔比约恩Ravn的安徒生

1
@akauppi你是对的!我正在运行14.10。抱歉给您带来不便,我应该删除答案吗?
加拉加

1
我不希望删除它-对于某些人,使用14.10而不是14.04可能是一个很好的选择。
akauppi 2015年

22

这是在Ubuntu 14.04 LTS上从头开始设置Oracle Java 7和Java 8的方法:[注意:不是OpenJDK]:

apt-get -y -q update
apt-get -y -q upgrade
apt-get -y -q install software-properties-common htop
add-apt-repository ppa:webupd8team/java
apt-get -y -q update
echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | sudo /usr/bin/debconf-set-selections
echo oracle-java7-installer shared/accepted-oracle-license-v1-1 select true | sudo /usr/bin/debconf-set-selections
apt-get -y -q install oracle-java8-installer
apt-get -y -q install oracle-java7-installer
update-java-alternatives -s java-8-oracle

这是无人值守的,适合包含在Vagrant条款块中;我的要点有更多详细信息:https : //gist.github.com/tinkerware/cf0c47bb69bf42c2d740

编辑:这将自动接受Oracle的JDK许可证;在运行它之前,请确保您对此没有问题。


1
看起来不错。但是它缺少您获得根访问权限的部分。还是不错的答案。
MadMike 2015年

1
对; 我将此与Vagrant一​​起使用,后者为vagrant用户设置了无密码sudo
Cagatay 2015年

5
这是Oracle Java,而不是问题所在的OpenJDK Java。还要注意,回声线环绕了安装程序的许可接受问题。
托尔比约恩Ravn的安徒生

3
@ThorbjørnRavnAndersen是的,我确实注意到了有关OpenJDK的问题。我专门说过,我的方法是安装Oracle Java。您可能会争辩这无关紧要,但是我认为值得一提的是仍然可以为您提供可以在14.04 LTS上运行Java 7/8的运行时的替代方法。许可接受问题的“规避”是一个有趣的词选择;我想说一个人应该在运行脚本之前阅读Oracle许可证,该脚本会在安装过程中自动接受。
Cagatay 2015年

3
谢谢@Cagatay !! 这个答案对我来说非常有用,我正在寻找使用Vagrant的Java 8安装。
Sotsir

14

截至2017年8月8日,我发现此问题及其答案变得有些难以理解,无法理解,因此,我在此答案中总结了一些发现。

简短的答案是,截至2017-08-08的OpenJDK 8尚未正式适用于Ubuntu 14.04

但是,有许多可用的选项:

  • 升级到较新版本的Ubuntu。OpenJDK 8从14.10起可用。(从16.04 LTS起的OpenJDK 9,从18.04 LTS起的OpenJDK 11)
  • http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html手动下载并安装Oracle Java(不是OpenJDK)作为tar.gz文件,只需解压缩并具有bin可以将目录添加到$PATH变量之前接受的许可证。您可能还选择使用第三方PPA。请注意,在可预见的将来(围绕Java 11),Oracle Java似乎仅用于付费客户。
  • 使用第三方PPA下载OpenJDK 8。
  • http://www.azul.com/downloads/zulu/zulu-linux/(DEB)下载Azul认证的OpenJDK 8版本。
  • 编译源代码并自己安装。

有关详细信息,请参见其他答案。

请注意,个人包装档案(PPA)通常是个人自愿建立的。内容可能已过时或在没有警告的情况下消失了。

我个人建议将Ubuntu升级到18.04 LTS,或者如果不可能的话,下载Azul版本。


注意:如果仍然需要将OpenJDK 8移植到14.04,请通过登录并单击顶部的“是否对您有影响”,对该错误进行投票:https : //bugs.launchpad.net/ubuntu/+source/openjdk-8/ +错误/ 1368094


5

注意自2016年4月22日以来,Vivid的软件包已被删除。在packages.ubuntu.com中的新闻项目:“反映出xenial版本,添加yakkety,删除生动”。此答案的解决方法很聪明,但在当前情况下不再适用。截至2017年1月6日,可信任的package.ubuntu.com/trusty-backports/java上还没有Java 8的反向端口。请根据需要进行修改。


查看Android官方网站的答案

https://source.android.com/source/initializing.html

没有适用于Ubuntu 14.04的受支持的OpenJDK 8软件包。Ubuntu 15.04 OpenJDK 8软件包已成功与Ubuntu 14.04一起使用。使用以下说明,发现较新的软件包版本(例如15.10、16.04的软件包)在14.04上不起作用。

http://packages.ubuntu.com/vivid/openjdk-8-jdk下载适用于您的体系结构的.deb软件包:
openjdk-8-jre-headless
openjdk-8-jre
openjdk-8-jdk

请记住,您可以通过以下方式获得计算机的体系结构:

$ uname -m    

x86_64代表64位(amd64)Linux内核体系结构,而i386 / i486 / i586 / i686代表32位(i386)系统。

(可选)使用http://packages.ubuntu.com/vivid/openjdk-8-jdk上的信息来确认下载文件的校验和。

例如,使用sha256sum工具:

$ sha256sum {package file}    

安装软件包:

$ sudo apt-get update    

对下载的每个.deb文件运行dpkg。由于缺少依赖项,可能会产生错误:

$ sudo dpkg -i {downloaded.deb file}    

要修复缺少的依赖项,请执行以下操作:

$ sudo apt-get -f install    

4

我只是在这里投票,现在我们有733个人关心将openjdk-8移植到ubuntu-14.04。

我发现这个PPA资料库是最新的

并希望有希望!?

它为我工作。我使用以下命令成功在ubuntu-14.04上安装了openjdk-8-jdk:

sudo add-apt-repository ppa:jonathonf/openjdk
sudo apt-get update
sudo apt-get install openjdk-8-jdk

这是我的java -version输出:

openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-8u131-b11-1~14.04.york0-b11)
OpenJDK 64-Bit Server VM (build 25.131-b11, mixed mode)

这是我的uname -a输出:

Linux mars1 4.4.0-75-generic #96~14.04.1-Ubuntu SMP Thu Apr 20 11:06:30 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

这是我的lsb_release -a输出:

Distributor ID: Ubuntu
Description:    Ubuntu 14.04.5 LTS
Release:        14.04
Codename:       trusty

我的虚拟主机服务器提供者告诉我他们仅提供对Ubuntu-14.04的支持,我猜他们想一直这样直到2019年!因此,如果您知道在ubuntu-14.04上使用openjdk-8的任何更好方法,请告诉我。

谢谢!



我还必须运行以下命令以得到它的工作:sudo update-java-alternatives --jre --set java-1.8.0-openjdk-amd64sudo update-java-alternatives --jre-headless --set java-1.8.0-openjdk-amd64
champost

2

Nix软件包管理器还维护适用于Ubuntu的OpenJDK 8的二进制软件包,这意味着您可以在不到五分钟的时间内开始使用可用的Java 8编译器(当然,还需要快速的Internet连接)。

这些步骤是:

  1. 安装Nix软件包管理器(https://www.domenkozar.com/2014/01/02/getting-started-with-nix-package-manager/):$ bash <(curl https://nixos.org/nix/install)

  2. 在安装结束时,运行一线Nix告诉您的shell: $ . ~/.nix-profile/etc/profile.d/nix.sh

  3. 安装OpenJDK Nix软件包: $ nix-env -i openjdk

  4. 检查javac$ javac -version

而已。哦,您将要确保将步骤2中的单线放入您的中~/.bashrc。这将告诉Nix正确链接已安装的软件包(因为它将实际文件保留在非标准目录中)。


1
出于好奇-为什么除了apt-get之外,还想要一个额外的软件包管理器?
托尔比约恩Ravn的安徒生

2
@ThorbjørnRavnAndersen-具体的原因是可以以最小的痛苦快速获得OpenJDK 8,并且一般的原因是Nix是与apt-get和其他较旧的程序包管理器相比革命性的改进。
Yawar

我问的是一般情况-不是专门针对OpenJDK。引入新的程序包管理器要比不使用现有的生态系统要重得多,这肯定有很重的理由,我很难理解。
托尔比约恩Ravn的安徒生

1
@ThorbjørnRavnAndersen-在一般情况下有充分的理由推荐Nix。正如我提到的,这是革命性的改进。在git上超过svn。请访问infoq.com/articles/configuration-management-with-nix了解更多信息。
Yawar,2015年

2

我从官方Debian仓库获得了OpenJDK 8,而不是一些随机的PPA。这是我的操作方式:

sudo apt-get install debian-keyring debian-archive-keyring

制作/etc/apt/sources.list.d/debian-jessie-backports.list

deb http://<httpredir>.debian.org/debian/ jessie-backports main

在其中<httpredir>使用近镜前缀更改的位置(请参阅https://www.debian.org/mirror/list

制作/etc/apt/preferences.d/debian-jessie-backports

Package: *
Pin: release o=Debian,a=jessie-backports
Pin-Priority: -200

然后最后进行安装:

sudo apt-get update
sudo apt-get -t jessie-backports install openjdk-8-jdk

这个答案对我不起作用。openjdk-8-jdk想要openjdk-8-jre想要libjpeg62-turbo。根据apt后者的说法,它是“不可安装的”,或者更详细地说是“不可用的,但是被另一个软件包引用。这可能意味着该软件包丢失,已被废弃或只能从其他来源获得” –因此不是从我的存储库中。追逐变得太聪明了
XavierStuvw

1

直接从源代码自己构建Java 8实际上也很容易……听起来吓人吗?正如我在http://blog2.vorburger.ch/2014/06/build-上所描述的那样,使用https://github.com/hgomez/obuildfactory/确实非常容易,而且实际上大约需要15分钟。your-own-jdk-at-home.html


1
建筑是一回事。那TCK呢?
托尔比约恩Ravn的安徒生

1
@ThorbjørnRavnAndersen我不知道。对于个人最终用户,自我建立已经非常有用。对于实际准备经过全面测试的程序包,可能是另一回事了……恐怕我对您一无所知。我只是环顾四周,发现openjdk.java.net/groups/conformance/JckAccess,您看到了吗?
vorburger 2014年

1

2016年3月11日更新,以root身份运行这些命令:

apt-get update
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys DA1A4A13543B466853BAF164EB9B1D8886F44E2A
touch /etc/apt/sources.list.d/openjdk.list
echo "deb http://ppa.launchpad.net/openjdk-r/ppa/ubuntu trusty main " >>/etc/apt/sources.list.d/openjdk.list
echo "deb-src http://ppa.launchpad.net/openjdk-r/ppa/ubuntu trusty main" >>/etc/apt/sources.list.d/openjdk.list
apt-get update
apt-get -y install openjdk-8-jdk
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
echo "$JAVA_HOME"

2
第一行是不需要的。接下来的4行等效于add-apt-repository ppa:openjdk-r/ppa。此答案也是较旧答案的重复。
Paul Stelian

1
总之(截至2017-05-02),这对我有用。sudo add-apt-repository -y ppa:openjdk-r/ppa; sudo apt-get update; sudo apt-get install -y openjdk-8-jdk
Tzunghsing David Wong
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.