当只有 Java 11 JRE 可用时运行 Java 8 jar

Dod*_*ion 4 java java-11

我有一个第三方可执行 jar 文件,我无权访问其源代码。它是用 Java 8 编译的,它使用一些 javax 包进行 XML 处理。这些位于 Java EE 中,并已从 Java SE 的最新版本中删除。

我想在我无法控制的主机上运行这个第三方 jar 文件。它安装了 Java 11,但不允许我在其上安装 Java 8。

我看过这个答案,它说解决这个问题的方法是用额外的依赖项重建应用程序,以替换从 Java 11 jre 中删除的 Java EE 包。不幸的是,我无法使用该答案,因为我无法访问源代码。我可以改为使用命令的-classpath参数java -jar来解决这个问题吗?

And*_*eas 5

如果它是一个可运行的 jar,那么它就有一个META-INF/MANIFEST.MF设置类路径的文件。

您不需要源代码。只是不能解压缩的jar文件,对于需要额外的第三方jar添加额外的条目到Class-PathMANIFEST.MF文件和JAR它备份。

然后将 jar 文件与其他第三方 jar 一起发送。


例子

假设您的foo.jar文件使用 JAF (java.activation),即它需要javax.activation-1.2.0.jar添加到类路径中。

编辑MANIFEST.MF文件并添加javax.activation-1.2.0.jarClass-Path值的末尾,与现有值用空格分隔。如果没有Class-Path,请添加:

Class-Path: javax.activation-1.2.0.jar
Run Code Online (Sandbox Code Playgroud)

然后将更新foo.jarjavax.activation-1.2.0.jar文件和新的文件发送到同一个文件夹中。