Ubuntu:OpenJDK 8 - 无法找到包
Posted
技术标签:
【中文标题】Ubuntu:OpenJDK 8 - 无法找到包【英文标题】:Ubuntu: OpenJDK 8 - Unable to locate package 【发布时间】:2016-01-01 17:18:45 【问题描述】:所以我刚刚安装了 Ubuntu,这是我第一次在 Linux 环境中工作,所以请忍受我在这里的笨拙。
无论如何,我直接从 Oracle 下载了 Java 8 JDK,但我知道还有一个用于 Java 8 的 OpenJDK。我有两个问题。
Oracle 版本和 OpenJDK 有什么区别。优点/缺点?
当我尝试获取 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 点,我现在很累。对于这个新问题的任何其他建议将不胜感激,否则我肯定会在早上第一件事检查该链接。
【问题讨论】:
packages.ubuntu.com/search?keywords=openjdk-8-jdk 您运行的是哪个版本的 Ubuntu?最新的几个版本已将其作为安装选项提供。 Stephen 的链接将解决您的问题 :) 谢谢。现在是凌晨 2 点,所以我要去睡觉了,但我会在早上检查链接。我对我的问题添加了一个附加问题的编辑,如果您可以查看它,那就太好了。如果现有的链接/答案也对此有所帮助,我很抱歉现在看得太累了,我会在早上检查它。 我相信我在 ubuntu 14.10 上。无论最近的长期版本是什么。 【参考方案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 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 只能通过此获取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(update-alternatives 的特定 java 版本):在 Ubuntu 中,多个软件包提供相同的功能(浏览互联网、编译邮件、编辑一个文本文件或提供 java/javac 可执行文件...)。为了允许系统在给定特定任务的情况下选择用户收藏夹工具,使用了在/etc/alternatives/
下使用symlinks 的机制。尝试如上所示更新 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 信息(包版本、安装与否、描述)。
【讨论】:
问题是我收到一条消息“无法找到包 oracle-java8-installer”。当我尝试使用 sudo apt-get 命令获取 openjdk 8 时,也会发生同样的情况。 值得注意的是,这是(至少标记为)Java 的 Oracle 商业版本,而不是开放社区版本 (openjre)。 @basZero:看来您需要安装软件属性:apt-get install software-properties-common
。因此,我将更新帖子以包含此要求。谢谢
此答案无效 - oracle 禁止直接下载 java 安装程序。 sudo apt-get install oracle-java8-installer 失败
我已经尝试解决这个问题 4 个小时了。感谢这个很棒的解决方案!【参考方案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
额外奖励(如何在不同版本之间切换)
从终端运行以下命令:
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 -version
和 javac -version
。
【讨论】:
非常有用,因为我不知道安装 OpenJDK 需要哪个仓库!非常感谢。 @cram2208 很高兴这对您有所帮助。感谢您的评论。 openjdk-r 对服务器来说足够安全吗? 感谢您的详细回答,这个解决方案非常适合我。【参考方案3】:我从官方 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
【讨论】:
最后是update-alternatives --config java ;-)
非常感谢!这是唯一对我有用的解决方案(Deb 8)【参考方案4】:
sudo apt-get update
sudo apt-get install openjdk-8-jdk
这应该可以工作
【讨论】:
请在现有答案的基础上添加说明。 我使用的是 Windows 的 WSL2,但在安装 OpenJDK 之前我忘记更新软件包并得到同样的错误。 @GertArnold,Zoe 的回答在那种情况下帮助了我。 为什么这个答案在底部?我们可以请它投票到顶部吗;-)【参考方案5】:我一直在互联网上寻找答案。我有一个 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
【讨论】:
【参考方案6】:我遇到了同样的问题并尝试了此页面上的所有解决方案,但都没有成功。
最终奏效的是将universe
存储库添加到我的存储库列表中。为此,请运行以下命令
sudo add-apt-repository universe
运行上述命令后,我能够运行
sudo apt install openjdk-8-jre
没有问题,软件包已安装。
希望这对某人有所帮助。
【讨论】:
不知道为什么我的这个答案被否决了。如果有不正确或潜在的问题,请发表评论以帮助他人和我自己更好地理解。【参考方案7】:我在安装时遇到了同样的问题
openjdk-8-jdk
在 ubuntu 和 kali 上但失败了,然后我发现程序未在存储库列表中列出,所以我通过添加 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
【讨论】:
【参考方案8】:可能来晚了,但它为我节省了很多:
在 Ubuntu 上,搜索并点击软件和更新。加载以下页面。确保选中可从互联网下载下的相应框。如果未选中这些,则找不到几个包。
【讨论】:
【参考方案9】:添加 JDK
存储库后,在安装之前,您可能需要先运行更新,以便可以添加存储库
跑步
apt update
然后继续安装
sudo apt install adoptopenjdk-8-hotspot
【讨论】:
【参考方案10】:当我在 win10 上将 Ubuntu 作为子系统(终端)安装时,我在 windows10 上遇到了同样的问题,我尝试了很多方法来解决这个问题,但我可以通过安装 Kali Linux(终端)来下载 openjdk-8-jdk而不是 win10 上的 Ubuntu。
【讨论】:
您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。以上是关于Ubuntu:OpenJDK 8 - 无法找到包的主要内容,如果未能解决你的问题,请参考以下文章