在Linux上安装JDK的正确方法是什么?

15

我正在运行基于Debian的Crunchbang Linux系统,希望在我的系统上安装Oracle JDK(而不是openjdk)。

我花了一些时间通过谷歌搜索,但是我没有找到如何安装(和配置)它的清晰说明。

这里是我的问题:

正确/最佳位置用于安装下载的JDK在哪里?(大多数人喜欢类似于usr/lib/jvm的东西。为什么?

当我安装了jvm(即将jdk<version>.tar.gz文件的内容复制到所选位置),我必须设置系统以引用jdk。

在这里,例如,我可以使用:sudo update-alternatives --install "/usr/bin/java" "java" \ "/usr/lib/jvm/jdk<version>/bin/java" 1。 我必须对javac执行相同的操作,对吗?

最后,我必须通过添加以下行来设置JAVA_HOME变量:

JAVA_HOME=/usr/lib/jvm/jdk<version>/
export JAVA_HOME

添加到.bashrc文件中。

但问题是:每次升级jdk时都必须更新我的替代方法,怎么解决?有人能清晰地描述如何巧妙正确地在Linux系统上安装JDK吗?

谢谢。

4个回答

11
您可以安装并保持最新的Oracle Java 7,您需要手动将PPA存储库添加到软件源中。
来自http://www.webupd8.org/2012/06/how-to-install-oracle-java-7-in-debian.html
su -
echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu precise main" | tee -a     /etc/apt/sources.list
echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu precise main" | tee -a /etc/apt/sources.list
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EEA14886
apt-get update
apt-get install oracle-java7-installer
exit

对于Ubuntu,http://www.webupd8.org/2012/01/install-oracle-java-jdk-7-in-ubuntu-via.html是安装Oracle Java JDK 7的方法。我使用这种方法在我的Ubuntu服务器上成功安装了JDK。


谢谢,这个方法真的很好用!只是想问一下,我怎么用这种方式卸载Java? - Moonlit
为什么我会被阻止访问:Err http://ftp.uk.debian.org wheezy/main Sources 403 禁止访问。 - FutuToad
3
针对JDK8,只需安装oracle-java8-installer而不是java7。 - Yehonatan

4

步骤1:打开应用程序 >> 辅助设备 >> 终端

步骤2:输入以下命令行...

  sudo apt-get install openjdk-6-jdk

步骤三:按照以下命令行输入...
  apt-cache search jdk

(注意:此处仅象征性地使用openjdk-6-jdk,您可以根据需要选择jdk版本。)
如何在Ubuntu(Linux)中为Open jdk设置“环境变量”?
第四步:对于“JAVA_HOME”(环境变量),在“终端”中使用您的安装路径输入以下命令...
  export JAVA_HOME=/usr/lib/jvm/java-6-openjdk

(注意:“/usr/lib/jvm/java-6-openjdk”在此仅作演示符号,您应根据您的安装使用自己的路径。)
步骤5:在“终端”中,使用您的安装路径输入以下命令,将其作为“PATH”(环境变量)...
  export PATH=/usr/lib/jvm/java-6-openjdk/bin

(注:这里仅为演示,符号“/usr/lib/jvm/java-6-openjdk”只是象征性地使用。您应根据您的安装使用自己的路径。)
第6步:检查是否安装了“open jdk”,只需在“终端”中输入以下命令java。

JDK 7 没有仓库吗?JDK 6 将在本月达到生命周期的终点。 - Axel
2
谢谢,但我不想安装“openjdk”,而是官方的ORACLE jdk(Sun)(我必须从他们的网站下载,因为它不在我的存储库中)。 - Moonlit
导出 PATH 会搞乱我的 PATH 变量。 - chrips
应该是 export PATH=$JAVA_HOME/bin:$PATH - Seraf

2

2020年我们的工作方式如下:

NB:这也适用于Linux系统上的命令行。

感谢这位大佬在这里

步骤1:从官方网站下载最新的JDK(jdk-8u231-linux-x64.tar.gz)。

 wget -c --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u231-linux-x64.tar.gz

因为我们是远程安装,如果不是的话就从这里下载。

步骤 2:打开终端(Ctrl + Alt + T)并输入以下命令。

sudo mkdir /usr/lib/jvm

步骤 3: 输入以下命令以更改目录。

cd /usr/lib/jvm

步骤四:使用以下命令在该目录中提取jdk-8u231-linux-x64.tar.gz文件。

sudo tar -xvzf ~/Downloads/jdk-8u231-linux-x64.tar.gz

根据该命令,JDK文件名为jdk-8u231-linux-x64.tar.gz,位于~/Downloads文件夹中。如果您的下载文件在任何其他位置,请根据您的路径更改该命令。

步骤5: 输入以下命令打开环境变量文件。

sudo nano /etc/environment

在打开的文件中,将以下二进制文件夹添加到现有的PATH变量中(在我的情况下,该文件为空,因此我只需添加内容并保存)。
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/jvm/jdk1.8.0_231/bin:/usr/lib/jvm/jdk1.8.0_231/db/bin:/usr/lib/jvm/jdk1.8.0_231/jre/bin"
J2SDKDIR="/usr/lib/jvm/jdk1.8.0_231"
J2REDIR="/usr/lib/jvm/jdk1.8.0_231/jre"
JAVA_HOME="/usr/lib/jvm/jdk1.8.0_231"
DERBY_HOME="/usr/lib/jvm/jdk1.8.0_231/db"

这是您修改后文件的外观...

保存更改并关闭gedit。

步骤7: 输入以下命令以通知系统Java的位置。根据您的JDK版本,路径可能会有所不同。

sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jdk1.8.0_231/bin/java" 0

sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/jdk1.8.0_231/bin/javac" 0

sudo update-alternatives --set java /usr/lib/jvm/jdk1.8.0_231/bin/java

sudo update-alternatives --set javac /usr/lib/jvm/jdk1.8.0_231/bin/javac

第八步: 为了验证设置,请输入以下命令,并确保它们打印出您在上一步中提供的java和javac的位置。

update-alternatives --list java

update-alternatives --list javac

步骤9: 重新启动计算机(或仅注销并登录),然后再次打开终端。(我不必执行此步骤,因为步骤10已经完成)

步骤10: 输入以下命令。

java -version

步骤11: 享受吧!


2

只需创建一个符号链接/usr/lib/jvm/jdk,指向/usr/lib/jvm/jdk<version>。然后,在更新JDK后,您只需更新符号链接以指向新位置即可。


PS:如果您的发行版可用,您应该像@Linn建议的那样添加一个拉取Oracle JDK的存储库。 - Axel
谢谢,我想我会选择这个方法 :) 只是为了澄清一下:我需要在 update-alternatives 中引用这个符号链接,还有在 bashrc 文件等中吗?我应该把符号链接放在哪里?当我想要使用除了 java 或 javac(例如 javaw)之外的其他命令时,我需要运行相应的 update-alternatives 命令对吗? - Moonlit
你需要在/usr/lib/jvm目录下创建符号链接。切换到该目录并以root身份运行ln -s jdk<version> jdk(如果在Ubuntu或类似的发行版上,请使用sudo)。然后运行update-alternatives并引用新的符号链接。 - Axel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接