0

如何将自定义加载程序添加到可执行 jar?目前,我通过打开 jar 文件、粘贴类并在末尾重新签名来手动执行此操作。-.-

在此先感谢佩德罗席尔瓦

4

1 回答 1

0

可执行jar限制

在使用 Spring Boot Loader 打包的应用程序时,您需要考虑两种类型的限制。

Zip 条目压缩

嵌套 jar 的 ZipEntry 必须使用该ZipEntry.STORED方法保存。这是必需的,以便我们可以直接查找嵌套 jar 中的各个内容。嵌套 jar 文件本身的内容仍然可以压缩,外部 jar 中的任何其他条目也可以。

系统类加载器

加载类时应该使用启动的应用程序Thread.getContextClassLoader()(大多数库和框架默认会这样做)。尝试通过加载嵌套的 jar 类ClassLoader.getSystemClassLoader()将失败。请注意 java.util.Logging 始终使用系统类加载器,因此您应该考虑使用不同的日志记录实现。

替代单罐解决方案

如果上述限制意味着您不能使用 Spring Boot Loader,则可以考虑以下替代方案:

  1. Maven 阴影插件
  2. 罐子类加载器
  3. 一个罐子

资源链接:

  1. 可执行的jar格式
  2. spring boot 加载 jars(应用程序依赖项和外部文件系统 jars)
于 2017-03-25T21:26:19.713 回答