繁体   English   中英

Ubuntu:OpenJDK 8 - 无法找到包

[英]Ubuntu: OpenJDK 8 - Unable to locate package

所以我刚刚安装了 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点,我现在很累。 对此新问题的任何其他建议将不胜感激,否则我肯定会在早上首先检查该链接。

更新:下面没有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 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-repository <PPA_id> :Ubuntu(就像每个 Debian 衍生产品,一般来说每个 Linux 发行版)都有一个主要的包存储库,用于处理包依赖项和更新等事情。 在 Ubuntu 中,可以使用 PPA(个人包存档)扩展主存储库,该 PPA(个人包存档)通常包含系统中不可用的包(就像 oracle jdk)或可用包的更新版本(例如:LTS 中的 LibreOffice 5 只能通过此获取购电协议)。

  • 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-alternativesupdate- alternatives 的特定 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/alternatives 下的符号链接以指向 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

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

BONUS ADDED(如何在不同版本之间切换)

  • 从终端运行以下命令:

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:

如您所见,我正在运行 open 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

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

这应该工作

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

我在安装 openjdk-8-jdk 时遇到了同样的问题。 apt install导致package not found

这里的其他评论可以帮助您安装 oracle jdk 8,但我想使用 openjdk 8。

我发现对于 Debian 10,默认情况下,只有 openjdk-11 软件包可以安装而无需添加 ppa,但是对于 Debian 9 (stretch),默认情况下,您可以安装 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 和 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

我遇到了同样的问题,并尝试了此页面上的所有解决方案,但没有一个能成功。

最终奏效的是将universe回购添加到我的回购列表中。 为此,请运行以下命令

sudo add-apt-repository universe

运行上述命令后,我能够运行

sudo apt install openjdk-8-jre

没有问题,并且安装了软件包。

希望这可以帮助某人。

可能来晚了,但它为我节省了很多:

在 Ubuntu 上,搜索并单击Software and Updates 加载以下页面。 确保选中可从 Internet 下载下的相应框。 如果未选中这些,则找不到几个包。

在此处输入图像描述

Daniel Blacks是唯一对我有用的东西。 Ubuntu 18尝试JDK1.8

添加JDK存储库后,在安装之前,您可能希望先运行更新,以便可以添加存储库运行apt update

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

我个人尝试了一堆这些解决方案,但没有一个对我有用,但最终我发现这很有效。

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

然后安装openjdk 8。

sudo apt install openjdk-8-jdk

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

或者 :

使用以下命令更新所有软件包:

Sudo apt-get install updates

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

使用 oracle.com 指南更改环境库 (java),过程漫长但神奇

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM