Ubuntu: OpenJDK 8 - 无法找到软件包

2022-08-31 08:37:52

所以我刚刚安装了Ubuntu,这是我第一次在Linux环境中工作,所以请忍受我在这里的贪吃。

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

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

  2. 当我尝试获得OpenJDK 8时,我不能。我正在粘贴终端命令和我收到的错误消息,希望得到建议。同样,对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点,我现在累了。对于这个新问题的任何其他建议都将不胜感激,否则我一定会在早上第一件事就是查看该链接。


答案 1

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


我建议你不要在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 foundsoftware-properties-common

sudo apt-get install software-properties-common

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

sudo apt-get install python-software-properties

没有 root 权限的 JDK 安装

如果你在目标计算机上没有管理员权限,你最简单的赌注就是用来安装祖鲁语认证的openjdk:sdkman

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

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

sdk ls java

使用以下命令安装所选版本:

sdk install java <version>

例如:

sdk install java 9.0.1-oracle

命令词汇表

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

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

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

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

通过我们实际更新系统存储库(所有这些操作都需要超级用户权限,因此我们在命令中预先附加 sudo)。sudo apt-get update

sudo apt-get install oracle-java8-installer

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

    ls -l /etc/alternatives/java*

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

额外:

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

  • apt-cache :查询APT缓存以搜索与提供search_key相关的软件包(可以是软件包名称或软件包描述中的某个单词)。search <search_key>

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


答案 2

如您所见,我只安装了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

添加奖金(如何在不同版本之间切换)

  • 从终端运行 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,请按键并按键。对 执行相同的操作, .1Enterjavacsudo update-alternatives --config javac

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