Ubuntu:OpenJDK 8 – 无法find软件包

所以我刚安装了Ubuntu,这是我第一次在Linux环境下工作,所以在这里忍受我的无所不在。

无论如何,我直接从Oracle下载了Java 8 JDK,但是我知道也有用于Java 8的OpenJDK。 我有两个问题。

  1. Oracle版本和OpenJDK有什么区别? 优点缺点?

  2. 当我尝试并获得OpenJDK 8,我不能。 我正在粘贴terminal命令和我在这里得到的错误信息,希望得到build议。 再说一次,对于Linux来说,这是我的第一个Linux发行版,在这里还不到一个小时。

    user@computer:~/Java$ sudo apt-get install openjdk-8-jdk Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package openjdk-8-jdk 

任何帮助,将不胜感激。 同时,我只是要使用Oracle软件包。 谢谢。

编辑:

所以,现在我有一个新的问题。 我安装了OpenJDK 7,它随Maven一起安装,之后我意识到我正在进行一对一的交易。 现在我有了JDK 7,Eclipse和Maven,他们都在工作,但是我被卡在了JDK 7而不是8上。

我看到下面有一个链接,我打算在早上检查一下,现在是凌晨2点,我现在很累。 任何其他意见,这个新的问题将不胜感激,否则我一定会检查出早上的第一件事。

更新 :下面没有root权限的安装


我build议你不要在ubuntu系统上手动安装软件包,如果已经有一个(半官方)存储库能够解决你的问题。 此外,使用Oracle JDK进行开发,只是为了避免(非常零星的)兼容性问题(我已经尝试了很多年,现在肯定更好)。

添加webupd8回购到您的系统:

 sudo add-apt-repository ppa:webupd8team/java sudo apt-get update 

安装您的首选版本的jdk(从java-6到java-9的版本):

 sudo apt-get install oracle-java8-installer 

你也可以安装多个版本的jdk,混合使用openjdk和oracle版本。 然后你可以使用命令update-java-alternatives在安装的版本之间切换:

 # list available jdk update-java-alternatives --list # use jdk7 sudo update-java-alternatives --set java-7-oracle # use jdk8 sudo update-java-alternatives --set java-8-oracle 

要求

如果你得到了add-apt-repository: command not found一定要安装software-properties-common

 sudo apt-get install software-properties-common 

如果您使用的是旧版本的Ubuntu:

 sudo apt-get install python-software-properties 

没有root权限的JDK安装

如果您的目标机器上没有pipe理员权限,最简单的方法是使用sdkman来安装经过zuluauthentication的openjdk:

 curl -s "https://get.sdkman.io" | bash source "$HOME/.sdkman/bin/sdkman-init.sh" sdk install java 

注意 :sdkman也允许安装官方的Oracle JDK,尽pipe它不是默认的选项。 查看可用的版本:

 sdk ls java 

安装select的版本:

 sdk install java <version> 

例如:

 sdk install java 9.0.1-oracle 

命令词汇表

  • sudo <command> [command_arguments] :用超级用户权限执行一个命令。

  • add-apt-repository <PPA_id> :Ubuntu(就像每个Debian衍生产品一样,每个Linux发行版都有一个主要的软件包仓库,用于处理软件包依赖和更新等事情)。 在Ubuntu中,可以使用通常包含系统中不可用包的PPA(Personal Package Archive,个人包档案)来扩展主存储库(就像oracle jdk一样)或更新版本的可用包(例如:LTS中的LibreOffice 5只能通过这个PPA )。

  • apt-get [install|update|upgrade|purge|...] :它是用于操纵系统上每个存储库状态的“命令行程序包处理程序”(安装/更新/升级可以被看作是对存储库当前状态)。

在我们的例子中 :使用命令sudo add-apt-repository ppa:webupd8team/java我们通知系统下一个存储库更新必须从webupd8回购中检索包信息。

使用sudo apt-get update我们实际上更新了系统信息库(所有这些操作都需要超级用户权限,所以我们在命令前添加了sudo )。

sudo apt-get install oracle-java8-installer

  • update-java-alternatives更新选项的特定java版本):在Ubuntu中,几个包提供了相同的function(浏览互联网,编译邮件,编辑文本文件或提供java / javac可执行文件…)。 为了允许系统在给定特定任务的情况下select用户collections夹工具,使用/etc/alternatives/下的符号链接机制。 尝试按上面所述更新jdk(在java 7和java 8之间切换),并查看如何更改此命令的输出:

    ls -l /etc/alternatives/java*

在我们的例子中sudo update-java-alternatives --set java-8-oracle更新/ etc / alternatives下的符号链接指向java-8-oracle可执行文件。

附加function:

  • man <command> :开始使用man读几乎每一个shell命令和它的选项(我在这个小答案中提到的每个命令都有一个手册页,尝试man update-java-alternatives ),写得很好,详细的帮助。

  • apt-cache search <search_key> :查询APTcaching以search与提供的search_key相关的包(可以是包名或包描述中的某个单词)。

  • apt-cache show <package> :为特定软件包(软件包版本,是否安装,描述)提供APT信息。

正如你所看到的,我只安装了Java 1.7(在Ubuntu 14.04机器上)。

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

为了安装Java 8,我做了,

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

之后,现在我有了java 7和8,

 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 

奖金增加(如何切换不同的版本)

  • 从terminal运行follwing命令:

sudo update-alternatives --config java

 There are 2 choices for the alternative java (providing /usr/bin/java). Selection Path Priority Status ------------------------------------------------------------ 0 /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java 1071 auto mode 1 /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java 1071 manual mode * 2 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1069 manual mode Press enter to keep the current choice[*], or type selection number: 

正如你所看到的,我正在运行打开jdk 8.要切换到jdk 7,请按1并按Enter键。 对于javac也是这样, sudo update-alternatives --config javac

检查版本以确认更改: java -versionjavac -version

我从官方的Debian仓库获得OpenJDK 8,而不是一些随机的PPA或非免费的Oracle二进制文件。 以下是我如何做到的:

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

make /etc/apt/sources.list.d/debian-jessie-backports.list

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

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