Java Jar构建文件限制

Java Jar构建文件限制,java,spring,spring-boot,jar,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.boo

我正在尝试构建一个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
线程“main”java.lang.IllegalStateException中的异常:java.lang.IndexOutOfBoundsException 位于org.springframework.boot.loader.ExecutableArchiveLauncher.(ExecutableArchiveLauncher.java:43) 位于org.springframework.boot.loader.JarLauncher.(JarLauncher.java:35) 位于org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51) 原因:java.lang.IndexOutOfBoundsException 位于org.springframework.boot.loader.jar.ascibytes(AsciiBytes.java:69) 位于org.springframework.boot.loader.jar.CentralDirectoryFileHeader.load(CentralDirectoryFileHeader.java:83) 位于org.springframework.boot.loader.jar.CentralDirectoryParser.parseEntries(CentralDirectoryParser.java:68) 位于org.springframework.boot.loader.jar.CentralDirectoryParser.parse(CentralDirectoryParser.java:57) 位于org.springframework.boot.loader.jar.JarFile.(JarFile.java:118) 位于org.springframework.boot.loader.jar.JarFile.(JarFile.java:106) 位于org.springframework.boot.loader.jar.JarFile.(JarFile.java:92) 位于org.springframework.boot.loader.jar.JarFile.(JarFile.java:83) 位于org.springframework.boot.loader.archive.JarFileArchive.(JarFileArchive.java:61) 位于org.springframework.boot.loader.archive.JarFileArchive.(JarFileArchive.java:57) 位于org.springframework.boot.loader.Launcher.createArchive(Launcher.java:129) 位于org.springframework.boot.loader.ExecutableArchiveLauncher.(ExecutableArchiveLauncher.java:40) ... 还有两个
即使我真的不喜欢支持这种方法,但如果您使用Java 7和同样支持这种方法的文件系统/操作系统,原则上这应该是可行的。使用Java6您没有机会,但无论如何这是EOL。另请参见Spring引导加载程序不支持zip64格式:


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

我只是使用了SpringBoot的addResourceLocations(),并带有指向该.JAR的类路径。就这么简单,我以前也这么做过,我只是忘了。我真傻。

在其他人都在谈论微服务的今天,我仍然看到这样一种方式,我真的很惊讶。这看起来真像一个弹簧靴巨石!也许你还在用Java6?您的环境是什么(JDK、OS、文件系统)?可能与我使用的Java8、Windows10、NTFS文件系统重复。但我使用的是Java8!我不明白。我应该使用什么其他方法?我可以把resources文件夹放在.jar文件所在的位置,但我不知道如何在.jar中使用它。您能提供一些解决方案的详细信息吗?我也面临同样的问题。嗨,阿杰。尝试构建一个6gb大小的罐子是不明智的。您只需使用addResourceLocations()指定项目中某个位置文件的路径即可。这并不难,但我无法进一步帮助你,因为我不记得我是怎么做到的!事实上,我的问题解决了。我正在尝试编写restapi来下载大文件(~5gb)的方法。我发现用于测试的5GB文件位于
src/main/resources
下。从POM中删除了这些,以及一些不必要的依赖项。这降低了罐子的大小,我的测试成功了。