微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Amazon linux 1 与 Amazon linux 2 中的 Java 8 问题

如何解决Amazon linux 1 与 Amazon linux 2 中的 Java 8 问题

在迁移以运行我的 Springboot 应用程序从 Amazon linux 1 到 Amazon linux 2 时遇到问题。我正在使用 run 文件选择 Java 版本 来自JAVA_HOME

  • 亚马逊 linux 1:JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk.x86_64
  • 亚马逊 linux 2:JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.282.b08-1.amzn2.0.1.x86_64/jre/bin/java

在 Amazon linux 1 中一切正常,但在 Amazon linux 2 中,我收到了不支持的major.minor 版本 52.0 错误。真正让我感到困惑的是,当我更改实例的整个 Java 版本(附加图像)时,一切都会再次正常运行。

我猜问题是我如何指向 java jre,但我无法弄清楚。有人可以帮我解决这个问题吗?提前致谢。

enter image description here

编辑 1:我用来运行的 sh 文件

#!/bin/sh
exec 2>&1

ulimit -n 10240

#For Java Classpath
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.282.b08-1.amzn2.0.1.x86_64/jre/bin/java
JAVA_BIN=$JAVA_HOME/bin/
export JAVA_HOME

EXTERNAL_HOME=external
EXTERNAL_RESOURCE=$EXTERNAL_HOME/resources

export SPRING_CONfig_NAME=application
export SPRING_CONfig_LOCATION=$EXTERNAL_RESOURCE/
export LOG_DIR=$EXTERNAL_HOME/logs
export LANG=ja_JP.UTF-8
cd $EXTERNAL_HOME
echo $SPRING_CONfig_NAME
echo $SPRING_CONfig_LOCATION
echo $LOG_DIR
#exec nice -n 20 java -server -Xmx512M -xms256M -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005-Xdebug -Xrunjdwp:transport=dt_socket,address=5005 -jar external-0.0.1.jar
#exec nice -n 20 java -server -DLog4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector -agentlib:jdwp=transport=dt_socket,address=*:5005 -jar external-0.0.1.jar
exec nice -n 20 java -server -Xmx512M -xms256M -Dlogging.config=file:$EXTERNAL_RESOURCE/log4j2.properties \

 -agentlib:jdwp=transport=dt_socket,address=5005 -jar external-0.0.1.jar

解决方法

它可能在 Amazon linux 1 中工作的原因是它可能只安装了一个 Java(或者 PATH 指向正确的 Java 版本)。在 Amazon linux 2 中,您安装了多个 Java。并且要执行 java 命令,不需要 JAVA_HOMEjava 命令从 PATH 变量读取可执行文件。因此导出 JAVA_HOME 没有任何意义。检查这个 - JAVA_HOME or PATH or BOTH?

所以这里强制性的是检查 PATH 变量指向什么。如果它指向另一个 JVM 而不是你需要的,那么你需要附加 path to bin 来执行那个特定的 java,就像这样 - exec nice -n 20 $JAVA_HOME/bin/java -server ...

另外,根据我个人的意见,没有必要从 script 导出任何变量,除非您需要另一个 script 中的变量,该变量可能在导出变量的那个之后执行。如果您只想在单个 script 中使用该变量,那么只需使用它而不导出它。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?