所以我刚安装了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点,我现在累了。对于这个新问题的任何其他建议将不胜感激,否则我肯定会在早上检查该链接。
答案 0 :(得分:103)
更新:
以下没有root权限的安装如果已有(半官方)存储库能够解决您的问题,我建议您不要在ubuntu系统上手动安装软件包。此外,使用Oracle JDK进行开发,只是为了避免(非常零星的)兼容性问题(我多年前尝试过,现在肯定更好)。
将 webupd8 repo添加到您的系统中:
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|...]
:它&#34;&#34;&#34;&#34;命令行包处理程序,用于操作系统上每个存储库的 state (安装/更新/升级可视为存储库当前状态的更改)。
在我们的案例中:使用命令sudo add-apt-repository ppa:webupd8team/java
,我们通知系统下一个存储库更新还必须从webupd8 repo检索包信息。
使用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信息(软件包版本,是否安装,说明)。
答案 1 :(得分:77)
如你所见,我只安装了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:
如您所见,我正在运行打开的jdk 8.要切换到jdk 7,请按1
并按 Enter 键。对javac
以及sudo update-alternatives --config javac
执行相同的操作。
检查版本以确认更改:java -version
和javac -version
。
答案 2 :(得分:14)
我从官方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
答案 3 :(得分:0)
sudo apt-get update
sudo apt-get install openjdk-8-jdk
这应该有效
答案 4 :(得分:0)
我遇到了同样的问题,并尝试了本页上的所有解决方案,但没有一个能解决问题。
最终有效的方法是将universe
存储库添加到我的存储库列表中。为此,请运行以下命令
sudo add-apt-repository universe
运行上述命令后,我能够运行
sudo apt install openjdk-8-jre
没有问题,软件包已安装。
希望这对某人有帮助。
答案 5 :(得分:0)
在添加JDK
存储库之后,在安装之前,您可能想先运行更新,以便可以添加存储库
跑
apt update
然后继续安装
sudo apt install adoptopenjdk-8-hotspot
答案 6 :(得分:0)
我一直在互联网上搜索有关此问题的答案。我安装了 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 软件包。因此,添加stretch 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
答案 7 :(得分:0)