有人可以指导我如何安装吗?
下面提到的PPA中的软件包没有更新Java的安全补丁。请勿在生产环境中使用,而是查看替代方案。
截至撰写本文时,OpenJDK 7的最后一次上传是在'2016-04-22',版本为7u95,并仍然可用作'latest',而Ubuntu 14.04已经更新到7u181。
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-7-jdk
sudo update-java-alternatives
命令,以便将openjdk-7设置为默认选项。 - Rian Sandersontzdata-java
软件包,因此安装没有时区支持。 - sfussenegger编辑于2019年7月22日:此答案目前无法使用。下面提到的JDK软件包在Debian Experimental上已不再可用。无论如何,它们落后于Ubuntu Trusty的软件包,后者包含了更近期的安全更新。在此问题得到解决之前,请参考其他答案(抱歉,暂无预计完成时间)。
看起来 openjdk-r/ppa 的维护者不会更新 openjdk-7 软件包的版本,超过 7u95-2.6.4-3。该软件包的描述 "从 Debian GNU/Linux 的主要存档中复制自 debian experimental" 给了我们一个关于如何自行处理的线索。
选项1:手动安装
下载适用于您的架构的软件包:
(对于大多数用户,如果安装了64位Ubuntu,则意味着amd64,如果安装了32位Ubuntu,则意味着i386)
使用dpkg
尝试安装软件包:
Ubuntu 17.10及更早版本:
sudo dpkg -i openjdk-7-* libjpeg62-turbo* libfontconfig1* fontconfig-config*
Ubuntu 18.04及更高版本:
sudo dpkg -i openjdk-7-* libjpeg62-turbo*
检查dpkg
的输出。如果存在依赖关系问题-这很可能会发生-则您将看到以下内容(将您的架构替换为amd64):
Errors were encountered while processing: openjdk-7-jre:amd64 openjdk-7-jre-headless:amd64 openjdk-7-jdk:amd64
如果没有依赖关系问题,则很好,您已经完成了,跳到#4。否则,如果您需要解决一些依赖关系问题,则可以使用以下命令处理:
sudo apt install -f
请注意,在让apt
解决依赖关系后,无需重新运行dpkg
。它将自动完成openjdk软件包的安装。
更新Java备选项。您可以使用update-java-alternatives --list
查看所有已安装的Java版本。要激活OpenJDK Java 1.7,请运行:
sudo update-java-alternatives -s java-1.7.0-openjdk-amd64
您可能会注意到有关IcedTeaPlugin.so
插件不可用的错误。这对于使用JDK的开发人员并不是真正的问题。
验证Java是否正在工作:
java -version
应输出类似于以下内容:
java version "1.7.0_161" OpenJDK Runtime Environment (IcedTea 2.6.12) (7u161-2.6.12-1) OpenJDK 64-Bit Server VM (build 24.161-b01, mixed mode)
apt
更新)
固定 可用于从Debian存储库安装和更新 openjdk-7-jdk 及其依赖项。fontconfig注意事项
libfontconfig1
和fontconfig-config
必须在Ubuntu 17.10及更早版本上升级到2.12或更高版本。来自Debian的更新包不包含Ubuntu的定制内容,因此安装了这些软件包后,某些应用程序会显示丑陋的字体;例如Charles Web Debugging Proxy。根据您使用的程序,您可能会受到此问题的影响或不受影响。
这是一个普遍适用的答案,关于如何在当前的Ubuntu上运行已过时的软件:将您的应用程序容器化。
例如,使用Docker和一个旧版本的Ubuntu基础镜像,在其中您要寻找的软件仍然可用/维护。
反过来也是可以的;您可以在当前稳定的Ubuntu上尝试在更新的或者其他Linux发行版上运行该软件。
安装Docker - Docker CE免费版本就可以了。例如,参考https://docs.docker.com/install/linux/docker-ce/ubuntu/或者使用最新的Ubuntu版本中提供的docker.io
软件包。
在一个空文件夹中创建一个Dockerfile
文件:
FROM ubuntu:trusty
RUN apt-get update \
&& apt-get install -y \
openjdk-7-jdk \
&& rm -rf /var/lib/apt/lists/*
ENTRYPOINT ["/usr/bin/java"]
如果需要,可以在该命令中添加更多软件包。
在该文件夹中运行以下命令:
docker build -t gertvdijk/java7 .
在使用Java 7镜像的单次使用容器中运行命令:
例如:java -version
:
docker run --rm -it gertvdijk/java7 -version
输出结果:
java version "1.7.0_181"
OpenJDK Runtime Environment (IcedTea 2.6.14) (7u181-2.6.14-0ubuntu0.1)
OpenJDK 64-Bit Server VM (build 24.181-b01, mixed mode)
可选地,为方便起见创建一个包装器。
创建一个文件/usr/local/bin/java7-in-docker
,内容如下:
#!/usr/bin/env sh -e
DOCKER_IMAGE=gertvdijk/java7
PWD="$(pwd)"
exec docker run \
--rm -it \
-v ${PWD}:${PWD} \
-v "/etc/passwd:/etc/passwd:ro" \
-v "/etc/group:/etc/group:ro" \
--user "$(id -u):$(id -g)" \
--workdir "${PWD}" \
"${DOCKER_IMAGE}" \
$@
这将使当前工作目录在容器内可用 - 不是整个文件系统,并且它将在容器命名空间中模拟您的本地用户帐户。
将其标记为可执行:
sudo chmod +x /usr/local/bin/java7-in-docker
像这样透明地运行Java 7:
java7-in-docker -jar relative/path/to/some.jar
Oracle JDK替代方案:
我想避免使用软件源的麻烦,因为我需要在7、8和9之间切换,所以我选择了Oracle JDK而不是OpenJDK。从官方网站下载的。我不确定最新的构建80是否包含与OpenJDK的构建161相同的修复程序。但对于我的开发来说,这并不重要。
然后您需要在环境中设置$JAVA_HOME
,以便各种脚本选择正确的JDK(例如Maven、JBoss等)。
为了完整起见,JDK 7已经终止支持,甚至自2017年9月起停止JDK 8的公共支持,并将在2018年9月后不再获得公共更新。
在Ubuntu 16.04和Ubuntu 17.04上安装Java 7。
建议安装Oracle Java,因为它比OpenJDK具有更好的性能。出于这个原因,我想提供一种替代方法。如果您想安装Oracle Java,请在终端中运行以下命令从PPA安装它。
添加所需的软件源:
sudo add-apt-repository ppa:webupd8team/java
更新 apt
缓存并安装 oracle-java7:
sudo apt update
sudo apt install java-common oracle-java7-installer
在安装过程中,您需要接受 Oracle 许可协议。安装完成后,我们需要设置 Java 环境变量,如 JAVA_HOME
更正 Java 环境变量。
sudo apt install oracle-java7-set-default
source /etc/profile
验证 Java 是否正常工作:
java -version
输出应类似于以下内容:
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-u80)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-u80, mixed mode)
apt-get
试图从不存在的页面获取安装程序。--如果您需要JDK 7,则可以从存档网站下载安装程序:http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html - Jaimedeb http://security.ubuntu.com/ubuntu trusty main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu trusty-security main restricted universe multiverse
apt-get update && apt-get install default-jdk