亚马逊 linux 1 与亚马逊 linux 2 中 Java 8 的问题
problem with Java 8 in Amazon linux 1 vs Amazon linux 2
从亚马逊 linux 1 迁移到 运行 我的 Springboot 应用程序到亚马逊 linux 2 时,我 运行 遇到了问题。我正在使用 运行 文件 select Java 版本 by 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 中,我遇到了 Unsupported major.minor version 52.0 错误。真正让我感到困惑的是,当我更改实例的 整个 java 版本时 (附图)然后一切都再次 运行ning 正常。
我猜问题是我如何指向 java jre,但我无法弄清楚。有人可以帮我解决这个问题吗?提前致谢。
编辑 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,server=y,suspend=n,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,server=y,suspend=n,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,server=y,suspend=n,address=5005 -jar external-0.0.1.jar
它可能在 Amazon linux 1
中工作的原因是它可能只安装了一个 Java(或者 PATH
指向正确的 Java 版本)。在 Amazon linux 2
中,您安装了多个 Java。要执行 java 命令,不需要 JAVA_HOME
。 java
命令从 PATH
变量中读取可执行文件。所以导出 JAVA_HOME
没有任何意义。检查这个 -
所以这里必须检查 PATH
变量指向的是什么。如果它指向另一个 JVM
而不是你需要的,那么你需要附加 path to bin
来执行那个特定的 java
,就像这样 - exec nice -n 20 $JAVA_HOME/bin/java -server ...
.
此外,根据我个人的意见,没有必要从 script
导出任何变量,除非您需要另一个 script
中的变量,该变量可能在导出变量的那个之后执行.如果您只想在单个 script
中使用该变量,则只需使用它而不导出它。
从亚马逊 linux 1 迁移到 运行 我的 Springboot 应用程序到亚马逊 linux 2 时,我 运行 遇到了问题。我正在使用 运行 文件 select Java 版本 by 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 中,我遇到了 Unsupported major.minor version 52.0 错误。真正让我感到困惑的是,当我更改实例的 整个 java 版本时 (附图)然后一切都再次 运行ning 正常。
我猜问题是我如何指向 java jre,但我无法弄清楚。有人可以帮我解决这个问题吗?提前致谢。
编辑 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,server=y,suspend=n,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,server=y,suspend=n,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,server=y,suspend=n,address=5005 -jar external-0.0.1.jar
它可能在 Amazon linux 1
中工作的原因是它可能只安装了一个 Java(或者 PATH
指向正确的 Java 版本)。在 Amazon linux 2
中,您安装了多个 Java。要执行 java 命令,不需要 JAVA_HOME
。 java
命令从 PATH
变量中读取可执行文件。所以导出 JAVA_HOME
没有任何意义。检查这个 -
所以这里必须检查 PATH
变量指向的是什么。如果它指向另一个 JVM
而不是你需要的,那么你需要附加 path to bin
来执行那个特定的 java
,就像这样 - exec nice -n 20 $JAVA_HOME/bin/java -server ...
.
此外,根据我个人的意见,没有必要从 script
导出任何变量,除非您需要另一个 script
中的变量,该变量可能在导出变量的那个之后执行.如果您只想在单个 script
中使用该变量,则只需使用它而不导出它。