开发者社区> 问答> 正文

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

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

我想在无法控制的主机上运行此第三方jar文件。它已经安装了Java 11,并且不允许我在上面安装Java 8。

我已经看到了这个答案,它表示解决此问题的方法是使用其他依赖项重建应用程序,以替换从Java 11 jre中删除的Java EE软件包。不幸的是,我无法使用该答案,因为我无权访问源代码。我可以改为-classpath在java -jar命令中使用参数来解决此问题吗?

问题来源:Stack Overflow

展开
收起
montos 2020-03-27 13:09:23 1381 0
1 条回答
写回答
取消 提交回答
  • 如果它是可运行的jar,则它具有一个META-INF/MANIFEST.MF设置类路径的文件。

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

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

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

    编辑MANIFEST.MF文件,并将其添加javax.activation-1.2.0.jar到Class-Path值的末尾,并与现有值隔开一个空格。如果没有Class-Path,请添加:

    Class-Path: javax.activation-1.2.0.jar
    

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

    回答来源:Stack Overflow

    2020-03-27 13:09:53
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载