首页 > 解决方案 > jre/jre-1.7.0/jre-1.7.0-openjdk/jre-openjdk/jre-1.7.0-openjdk-1.7.0.261-2.6.22.2.el7_8.x86_64的区别

问题描述

1. 我的查询和我研究的内容

在我为 Linux X64 (8u181-b13) 安装 JDK 后,/usr/lib/jvm 的目录包含以下 jre 的符号链接。

终端截图

lrwxrwxrwx   1 root root   21 May 29  2020 jre -> /etc/alternatives/jre
lrwxrwxrwx   1 root root   27 May 12  2020 jre-1.7.0 -> /etc/alternatives/jre_1.7.0
lrwxrwxrwx   1 root root   35 May 12  2020 jre-1.7.0-openjdk -> /etc/alternatives/jre_1.7.0_openjdk
lrwxrwxrwx   1 root root   54 May 12  2020 jre-1.7.0-openjdk-1.7.0.261-2.6.22.2.el7_8.x86_64 -> java-1.7.0-openjdk-1.7.0.261-2.6.22.2.el7_8.x86_64/jre
lrwxrwxrwx   1 root root   27 May 12  2020 jre-1.8.0 -> /etc/alternatives/jre_1.8.0
lrwxrwxrwx   1 root root   35 May 12  2020 jre-1.8.0-openjdk -> /etc/alternatives/jre_1.8.0_openjdk
lrwxrwxrwx   1 root root   51 May 12  2020 jre-1.8.0-openjdk-1.8.0.252.b09-2.el7_8.x86_64 -> java-1.8.0-openjdk-1.8.0.252.b09-2.el7_8.x86_64/jre
lrwxrwxrwx   1 root root   29 May 12  2020 jre-openjdk -> /etc/alternatives/jre_openjdk

我的查询这些版本有什么区别,应该在安装 Tomcat8.5.55 时指定。

jre
jre-1.7.0
jre-1.7.0-openjdk
jre-1.7.0-openjdk-1.7.0.261-2.6.22.2.el7_8.x86_64
jre-openjdk

据我搜索,我对每个符号链接的理解如下。

jre

-是一个符号链接指向

/etc/alternatives/jre

- 只包括JRE,不包括JDK

- 我发现 jre-1.7.0 和 jre-1.8.0 的不同之处在于,这个 jre 包含“jjs”,它是一个现在已经被贬值的 javascript 库

jre-1.7.0

-是一个符号链接指向
/etc/alternatives/jre_1.7.0

- 只包括JRE,不包括JDK

jre-1.7.0-openjdk

-是一个符号链接指向
/etc/alternatives/jre_1.7.0_openjdk

- 只包含JRE,不包含JDK,只从开放的JDK安装JRE部分。

jre-openjdk

- 是指向 /etc/alternatives/jre_openjdk 的符号链接

- 它是 JavaSE 的开源实现,其中包括 JDK。

2. 查询背景&我想做什么

我现在正在尝试在 CentOS 7 中安装 Tomcat 8.5.55。我问这个问题是因为,当我创建 tomcat 服务文件时,有一行指定 JAVA_HOME,我不知道是否要给出“jre”或此路径中的“jre-1.7.0”或“jre-1.8.0”。
Environment=JAVA_HOME=/usr/lib/jvm/jre

[整个 tomcat.service 文件]

# Systemd unit file for tomcat
[Unit]
Description=Apache Tomcat Web Application Container
After=syslog.target network.target
 
[Service]
Type=forking
 
Environment=JAVA_HOME=/usr/lib/jvm/jre
Environment=CATALINA_PID=[Tomcat Home Directory]/temp/tomcat.pid
Environment=CATALINA_HOME=[Tomcat Home Directory]
Environment=CATALINA_BASE=[Tomcat Home Directory]
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'
 
ExecStart=[Tomcat Home Directory]/bin/startup.sh
ExecStop=/bin/kill -15 $MAINPID
 
User=tomcat
Group=tomcat
UMask=0007
RestartSec=10
Restart=always
 
[Install]
WantedBy=multi-user.target

在此处输入图像描述

标签: javatomcat

解决方案


Apache Tomcat 版本页面列出了与各种 Tomcat 版本兼容的Java 版本。它说 Tomcat 8.5.x 需要 Java 7或更高版本

但是,Java 7 已停产,因此建议使用 Java 8。


我知道“jre-1.7.0”、“jre-1.8.0”是不同的版本,但是“jre”和“jre-1.7.0”之间的区别呢?

jre目录中的条目是符号链接。它最终会解析为使用该update-alternatives命令选择为默认值的 JRE 版本。

您可以通过手动跟踪符号链接或运行来弄清楚update-alternatives --display java

可能建议使用jre-1.7.0jre-1.8.0符号链接,以便您的 Tomcat 服务使用包管理器安装的最新Java 7 或 8 安装。(Java 8 仍在更新中……)


至于具体的区别,目前无法给出明确的答案。符号链接的设计由为您的 Linux 发行版实现 OpenJDK 打包的人员完成。不同的发行版(例如 Ubuntu 与 RHEL)可能会有所不同。它甚至可以在同一个发行版的版本之间发生变化,尽管那将是“不幸的”。

但是,我会假设被标记为“jre”的东西只是一个 JRE。如果我想要/需要一个 JDK,我会确保我已经安装了“jdk”包,然后为“jdk”使用相应的符号链接。

JRE 与 JDK 的区别将成为过去。从 Java 9 开始,Oracle Java 和 OpenJDK Java 版本只提供 JDK 版本。到“Hirsute”为止,Ubuntu 发行版打包仍然在区分 JRE 和 JDK 的 OpenJDK 包,但我的猜测是,在某些时候 Ubuntu Java 打包维护者会认为这是不值得的。


推荐阅读