更新:下面没有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 信息(包版本、安装与否、描述)。