Ubuntu: OpenJDK 8-无法定位软件包

所以我刚刚安装了 Ubuntu,这是我第一次在 Linux 环境下工作,所以请容忍我的菜鸟态度。

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

  1. Oracle 版本和 OpenJDK.Pro/Cons 之间的区别是什么?

  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
    

Any help would be appreciated. In the meantime, I'm just gonna use the Oracle package. Thanks.

Edit:

So, now I have a new problem. I installed OpenJDK 7, it came with Maven and just installed before I realized I was getting a two-for-one deal. Now I have JDK 7, and Eclipse, and Maven, and they're all working, but I'm stuck on JDK 7 rather than 8.

I saw that there's a link below, I intend to check it out in the morning, it's 2am and I'm tired right now. Any other advice for this new issue would be appreciated, otherwise I will definitely be checking out that link first thing in the morning.

301002 次浏览

UPDATE : 下面的安装没有 root 权限


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

Wbupd8回购添加到您的系统中:

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-options 更新-java-替代在安装的版本之间切换:

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

如果您在目标机器上没有管理员权限,那么最简单的方法就是使用 sdkman安装 zulu 认证的 openjdk:

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-itory <PPA_id>: Ubuntu (就像每个 Debian 衍生版本一样,一般来说也是每个 Linux 发行版本一样)有一个主要的包存储库,可以处理包依赖和更新之类的事情。在 Ubuntu 中,可以使用 PPA (个人软件包存档)扩展主存储库,这个 PPA 通常包含系统中不可用的软件包(就像 Oracle jdk 一样)或者可用软件包的更新版本(例如: LTS 中的 LibreOffice 5只能通过这个 PPA获得)。

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

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

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

sudo apt-get install oracle-java8-installer

  • Update-java-options (一个特定的 java 版本的 更新-备选方案) : 在 Ubuntu 中,几个包提供了相同的功能(浏览互联网、编译邮件、编辑文本文件或者提供 java/javac 可执行文件...)。为了让系统能够选择用户喜欢的工具给予一个特定的任务,使用 /etc/alternatives/下的 符号链接机制。尝试如上所示更新 jdk (在 java 7和 java 8之间切换) ,并查看如何更改这个命令的输出:

    ls -l /etc/alternatives/java*

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

附加:

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

  • APT-cache search <search_key>: 查询 APT 缓存以搜索与所提供的 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

为了安装 Java8,我做了,

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

附加奖励(如何在不同版本之间切换)

  • 从终端运行以下命令:

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:

如你们所见,我正在运行 JDK8。要切换到 jdk7,按 1并按 Enter键。对 javacsudo update-alternatives --config javac做同样的操作。

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

我从官方的 Debian 存储库中获取 OpenJDK8,而不是随机的 PPA 或非免费的 Oracle 二进制文件。我是这么做的:

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

制作 /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
sudo apt-get update
sudo apt-get  install openjdk-8-jdk

这应该能行

我也遇到了同样的问题,尝试了本页面上的所有解决方案,但没有一个奏效。

最后起作用的是将 universe回购添加到我的回购列表中

sudo add-apt-repository universe

在运行上面的命令之后,我就能够运行了

sudo apt install openjdk-8-jre

没有问题和软件包安装。

希望这对谁有帮助。

在添加 JDK回购之后,在安装之前,您可能需要先运行一个更新,以便可以添加回购 快跑 apt update

然后继续安装 sudo apt install adoptopenjdk-8-hotspot

我一直在网上搜索这个问题的答案。我有一个 Debian10服务器安装。

我在安装 openjdk-8-jdk 时遇到了同样的问题。

这里的另一个注释帮助您安装 oraclejdk8,但是我想使用 openjdk8。

我发现,对于 Debian 10,默认情况下,只有 openjdk-11包可以安装而不需要添加 ppa,但是对于 Debian 9(区段) ,默认情况下,你可以安装 openjdk-8包。因此,通过添加 Debian ppa 拉伸功能,我可以安装 openjdk-8包。

添加 Debian 伸展 ppa。

sudo apt-add-repository 'deb http://security.debian.org/debian-security stretch/updates main'

然后更新并安装 openjdk-8-jdk

sudo apt update && sudo apt install openjdk-8-jdk

可能会晚点到,但是这让我省了不少事:

在 Ubuntu 上,搜索并点击 软件及更新。加载以下页面。确保在 可从网上下载下选中了相应的框。当这些没有被检查时,有几个包不会被发现。

enter image description here

当我在 win10上安装 Ubuntu 作为子系统(终端)时,我在 windows10上遇到了同样的问题,我尝试了很多方法来解决这个问题,但是我可以通过在 win10上安装 Kali Linux (终端)而不是 Ubuntu 来下载 openjdk-8-jdk。

我在安装时遇到了同样的问题 在 ubuntu 和 kali 上的 openjdk-8-jdk失败了,然后我发现程序没有列在存储库列表中,所以我通过添加 PPA (个人包存档,这些是非官方的存储库)来解决它。

sudo apt update

sudo apt install software-properties-common

sudo apt-add-repository 'deb http://security.debian.org/debian-security stretch/updates main'

sudo apt install openjdk-8-jdk

尝试; openjdk-11-jdk 和 default-jdk

或者:

更新所有软件包:

Sudo apt-get install updates

然后进入 root,下载你想要的 java 版本并解压缩。 (如果您不知道手动安装,请尝试讨论中推荐的代码)

使用 oracle.com 指南更改每个环境库(java) ,这个过程很长,但是很神奇

就我个人而言,我尝试了一系列这样的解决方案,但没有一个对我有效,最终我发现这个方法是有效的。

sudo apt-add-repository 'deb http://security.debian.org/debian-security stretch/updates main'

然后安装 openjdk8。

sudo apt install openjdk-8-jdk

运行以下命令... 问题解决:)

sudo apt install software-properties-common -y


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