通过指定java版本运行cp命令

时间:2021-04-06 06:08:48

标签: java linux javac

我的 Linux 服务器中安装了 JDK 1.8。 我想将在 JDK 11 上运行的 Spring Boot 应用程序部署到 Linux 服务器。 我无法升级我的 Linux 服务器的 JDK 版本,因为在同一台 Linux 服务器上运行着其他应用程序,我不想打扰它们。

出于这个原因,我压缩了 JDK 11,将其复制到我的应用程序特定文件夹中的 Linux 服务器(与我的 Spring Boot 应用程序 jar 所在的位置相同)并解压缩它。

我尝试使用以下命令启动我的应用程序,但默认情况下它仍然运行 JDK 1.8 并抛出异常

java -cp test-api-0.0.1-SNAPSHOT.jar com.test.api.TestAPIApplication

如何修改上述 Linux 命令以使我的应用程序在 JDK 11 上运行

我无法修改 java 路径,因为它会影响同一 Linux 服务器上的其他应用程序。

1 个答案:

答案 0 :(得分:0)

抱歉,您不能:

  • 您无法通过 -cp 选项调整 Java 版本。
  • 您无法运行未安装的 Java 版本。

如果要运行依赖于 Java 11(或更高版本)功能或 API 的 SpringBoot 应用程序,则必须安装 Java 11(或更高版本)。

Java 11 库编译为 Java 11 类文件格式。 Java 8 JVM 不会理解它们。此外,这些库(很可能)依赖于仅在 Java 11(或更高版本)java 可执行文件中可用的本机代码方法(和其他东西)。这意味着您不安装 Java 11 的想法在技术上是不可行的。

但是您可以做的是在您的服务器上安装 Java 11 和 Java 8,然后通过使用 java 命令的绝对路径名或设置 PATH适当的环境变量。

(在典型的 Linux 系统上,Java 8 和 Java 11 的包名不同。因此,安装任一版本或同时安装两个版本应该没有困难。同样,Oracle Java 安装程序安装到不同的 Java 版本放到不同的目录中。)

(同样,Linux 中不共享环境变量设置。因此您可以为不同的应用程序设置不同的设置。如果您在适当的位置进行 PATHJAVA_HOME 或任何更改,您的新Java 11 应用程序不会干扰现有的 Java 8 应用程序。它只是“基本的 shell 内容”。)