SpringBoot .Jar构建文件限制

时间:2017-01-10 14:50:01

标签: java spring spring-boot jar

我正在尝试构建一个6GB大小的.JAR存档,但它不会起作用。似乎文件的限制为4GB,因为如果我将文件减少到4GB(4096MB)限制,那么构建成功。但我需要它是> = 6GB并且它必须包含25000个文件。求你帮帮我。

尝试启动时遇到错误.jar:

Exception in thread "main" java.lang.IllegalStateException:   java.lang.IndexOutOfBoundsException
    at org.springframework.boot.loader.ExecutableArchiveLauncher.<init>(ExecutableArchiveLauncher.java:43)
    at org.springframework.boot.loader.JarLauncher.<init>(JarLauncher.java:35)
    at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)
Caused by: java.lang.IndexOutOfBoundsException
    at org.springframework.boot.loader.jar.AsciiBytes.<init>(AsciiBytes.java:69)
    at org.springframework.boot.loader.jar.CentralDirectoryFileHeader.load(CentralDirectoryFileHeader.java:83)
    at org.springframework.boot.loader.jar.CentralDirectoryParser.parseEntries(CentralDirectoryParser.java:68)
    at org.springframework.boot.loader.jar.CentralDirectoryParser.parse(CentralDirectoryParser.java:57)
    at org.springframework.boot.loader.jar.JarFile.<init>(JarFile.java:118)
    at org.springframework.boot.loader.jar.JarFile.<init>(JarFile.java:106)
    at org.springframework.boot.loader.jar.JarFile.<init>(JarFile.java:92)
    at org.springframework.boot.loader.jar.JarFile.<init>(JarFile.java:83)
    at org.springframework.boot.loader.archive.JarFileArchive.<init>(JarFileArchive.java:61)
    at org.springframework.boot.loader.archive.JarFileArchive.<init>(JarFileArchive.java:57)
    at org.springframework.boot.loader.Launcher.createArchive(Launcher.java:129)
    at org.springframework.boot.loader.ExecutableArchiveLauncher.<init>(ExecutableArchiveLauncher.java:40)
    ... 2 more

3 个答案:

答案 0 :(得分:0)

即使我真的不支持这种方法的粉丝,如果您使用Java 7以及同样支持它的文件系统/操作系统,这应该原则上有效。使用Java 6你没有机会,但无论如何都是EOL。另请参阅What is the maximum number of files per jar?

答案 1 :(得分:0)

Spring引导加载程序不支持zip64格式:https://github.com/spring-projects/spring-boot/issues/2895

重组项目以将一些类打包成嵌套的jar。如果您使用gradle,这应该可以通过多模块项目轻松实现。

答案 2 :(得分:0)

我只是使用SpringBoot的addResourceLocations()和该.JAR的类路径。就这么简单,我以前做过这个,我只是忘记了。傻我。