更新: 下面的安装过程无需 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在已安装的版本之间进行切换:
update-java-alternatives --list
sudo update-java-alternatives --set java-7-oracle
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(个人软件包归档)扩展主要存储库,该存储库通常包含系统中不可用的软件包(例如Oracle JDK)或可用软件包的更新版本(例如:LTS中的LibreOffice 5仅通过此PPA可用)。
apt-get [install|update|upgrade|purge|...]
:这是“the”命令行软件包处理程序,用于操纵系统上每个存储库的状态(安装/更新/升级可以视为更改存储库的当前状态)。
在我们的情况下,使用命令
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 页面,可以尝试使用
man update-java-alternatives
).
-
apt-cache search <search_key>
: 查询 APT 缓存,搜索与所提供的 search_key 相关的软件包 (可以是软件包名称或软件包描述中的某个单词).
-
apt-cache show <package>
: 提供特定软件包 (软件包版本、是否已安装、描述) 的 APT 信息.