Centos 6.6:当我运行 JAR/WAR 文件而不使用 java -jar 命令时,会选择哪个 java?

Centos 6.6:当我运行 JAR/WAR 文件而不使用 java -jar 命令时,会选择哪个 java?

在 Centos 6.6 服务器上,如何在不使用“java -jar”命令的情况下运行可执行 JAR 或 WAR 文件时选择应选择哪个 java。我的意思是,我想使用“./archive.war”命令来执行它。

在此服务器上,我安装了 java6、java7 和 java8。用户 root 的 PATH 和 JAVA_HOME 指向 java8(所有操作均以 root 身份完成)。我想要执行的可执行 WAR 需要使用 java8 运行。

当我使用“java -jar”命令运行可执行 WAR 时,一切正常。所选的 Java 版本是正确的。

[...]# java -version
java version "1.8.0"
Java(TM) SE Runtime Environment (build 1.8.0-b132)
Java HotSpot(TM) 64-Bit Server VM (build 25.0-b70, mixed mode)

但是,当我尝试使用以下命令运行这场战争时......

./archive.war

我收到 Java 版本错误。

Exception in thread "main" java.lang.UnsupportedClassVersionError: <CLASS HERE!> : Unsupported major.minor version 52.0

意思是 Centos 没有选择预期的 java8 版本。没有考虑用户 root 的 PATH 和 JAVA_HOME 变量?

我想我遗漏了一些东西,这些东西会向系统指示在尝试执行带有 *.WAR/JAR 文件扩展名的文件时必须使用哪个可执行文件?目前,这必须指向 java6 或 java7,而不是 java8。

答案1

作为 root 用户,您可以在 /etc/profile 中附加 JAVA_HOME 值

export JAVA_HOME=/opt/jdkpath
PATH=$PATH:$HOME/bin:/opt/jdkpath/bin

将 /opt/jdkpath 更改为 jdk 安装的正确路径。

完成后,您可以注销并重新登录并执行服务命令

相关内容