我有一个第三方可执行jar文件,但我无法访问其源代码。它是使用Java 8编译的,并且使用一些javax包进行XML处理。这些位于Java EE中,并且已从Java SE的最新版本中删除。
我想在无法控制的主机上运行此第三方jar文件。它已经安装了Java 11,并且不允许我在上面安装Java 8。
我已经看到了这个答案,它表示解决此问题的方法是使用其他依赖项重建应用程序,以替换从Java 11 jre中删除的Java EE软件包。不幸的是,我无法使用该答案,因为我无权访问源代码。我可以改为-classpath在java -jar命令中使用参数来解决此问题吗?
问题来源:Stack Overflow
如果它是可运行的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
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。