java - 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
解决方案
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.0
或jre-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 打包维护者会认为这是不值得的。
推荐阅读
- python - tf.reduce_mean 的数值稳定性
- javascript - 设置格式化值中断函数
- c# - 除了从用户输入派生的 ITurnContext RecognizeAsync 之外,为 LuisRecognizer 提供预定文本上下文的最佳方法是什么?
- c++ - 为什么glm不翻译顶点
- go - 在 Go 切片中追加时超出范围
- kotlin - 错误:Kotlin:浮点文字不符合预期的浮点类型
- firebase - vuexfire firestoreAction,与 arg 绑定
- c++ - Qt如何在套接字等待响应时显示请等待对话框?
- php - 如何在 laravel api 中显示验证错误,同时将表单请求文件与控制器分开
- php - 动态在图像上写入文本并将文本居中