在Ubuntu Linux上从二进制文件安装Java 1.8

3

Oracle在如何从二进制文件安装Java 1.8方面提供帮助页面。

我能够完成以下步骤 -

在Oracle下载页面上下载x64 tar.gz文件。

创建我的目录并将文件移动到那里。

sudo mkdir /usr/local/java
sudo mv ~/Downloads/jdk-8u45-linux-x64.tar.gz .

并解压它。
sudo tar zxvf jdk-8u45-linux-x64.tar.gz

二进制本身是可行的,因为我可以使用绝对路径调用它。
> /usr/local/java/jdk1.8.0_45/bin/java -version
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)

但是我不能称它为独立的。
> java -version
The program 'java' can be found in the following packages:
 * default-jre
 * gcj-4.6-jre-headless
 * gcj-4.7-jre-headless
 * openjdk-7-jre-headless
 * openjdk-6-jre-headless
Try: sudo apt-get install <selected package>

即使将$JAVA_HOME设置为该目录,也无法工作。我是否漏掉了一些步骤?它需要添加到我的$PATH中吗?

编辑:我知道我可以使用sudo apt-get install安装Java。但是我在这里遇到了一些问题,因为我无法执行apt-get update,原因是出现了一些404错误。我宁愿将其作为单独的问题/帖子来处理。

谢谢!


1
你需要“update-alternatives”。见https://dev59.com/1FPTa4cB1Zd3GeqPfw6Q?rq=1 - Thilo
谢谢!那个方法很有效 :) 基本上是将整个“bin”目录添加到我的$PATH末尾 - user2490003
@Thilo,你不能在这里使用“update-alternatives”,因为该版本尚未在路径中。 - Menuka Ishan
2个回答

5

您刚刚解压了二进制文件,但是您没有设置JAVA_HOME。首先在您的个人资料中即~/.bashrc文件中设置JAVA_HOME

export JAVA_HOME=/usr/local/java/jdk1.8.0_45
export PATH=$PATH:$JAVA_HOME/bin

重新加载~/.bashrc文件:

> source ~/.bashrc 按回车键

然后再试一次。

> java -version
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)

1
谢谢!也感谢上面用户Thilo提供/链接了相同的答案。 - user2490003

0

最好的方法是使用update alternatives而不是使用JAVA_HOME。我下载了最新的tarball jdk-8u162-linux-x64.tar.gz 到子目录./src中。我还设置了/opt,使其归我所有,否则你需要使用sudo来解压.tar.gz文件。

#!/usr/bin/env bash

MAJOR_VERSION=8
ORACLE_BUILD_VERSION=162

JDK_TARBALL_VERSION=8u${ORACLE_BUILD_VERSION}-linux-x64
JDK_VERSION=1.${MAJOR_VERSION}.0_${ORACLE_BUILD_VERSION}
PRIORITY="10${MAJOR_VERSION}1"

cd src && tar xzf jdk-${JDK_TARBALL_VERSION}.tar.gz -C /opt/jdk

sudo update-alternatives --install /usr/bin/java java /opt/jdk/jdk${JDK_VERSION}/bin/java ${PRIORITY}
sudo update-alternatives --install /usr/bin/javac javac /opt/jdk/jdk${JDK_VERSION}/bin/javac ${PRIORITY}

echo "Checking: alternatives on java and javac"
sudo update-alternatives --display java
sudo update-alternatives --display javac

echo "Running: java -version"
java -version

我已经包含了构建162,因为这比您信息中的45要更新得多。应该向开发领域的每个人提供上面的脚本,因为我们目前可以看到Debian和Ubuntu的oracle-java8-installer存在问题,这可能会在几天内得到解决,但是这个脚本将永远有效。

脚本中的priority值非常重要,因为您必须覆盖已安装软件包的现有优先级。我已将其设置为使用要安装的主版本。只有当您安装了openjdk 9版本时,此优先级才会失败。


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