可执行 JAR 的限制
在使用 Spring Boot Loader 打包的应用程序时,您需要考虑以下限制:
-
Zip 条目压缩: 嵌套 JAR 的
ZipEntry必须使用ZipEntry.STORED方法进行保存。 这是必需的,以便我们可以直接定位到嵌套 JAR 中的各个内容。 嵌套 JAR 文件本身的内容仍然可以被压缩,外部 JAR 中的任何其他条目也是如此。
-
系统类加载器(System classLoader): 启动的应用程序在加载类时应使用
Thread.getContextClassLoader()(大多数库和框架默认都会这样做)。 尝试使用ClassLoader.getSystemClassLoader()加载嵌套 JAR 中的类会失败。java.util.Logging始终使用系统类加载器。 因此,您应考虑使用其他日志实现。