java - 在 Spring boot 中添加超过 65535 个条目的 jar
问题描述
我创建了句子之间的自定义语义相似度算法。项目创建了 65535 个条目 jar,因为它包含 100,000 个单词。我使用“mvn install:install-file”将自定义 jar 添加到我的 spring boot 项目并创建了 boot jar,但是每当我运行项目时,我都会收到此错误。
Exception in thread "main" java.lang.IllegalStateException: Failed to get nested archive for entry BOOT-INF/lib/semantics-1.0.jar
at org.springframework.boot.loader.archive.JarFileArchive.getNestedArchive(JarFileArchive.java:109)
at org.springframework.boot.loader.archive.JarFileArchive.getNestedArchives(JarFileArchive.java:87)
at org.springframework.boot.loader.ExecutableArchiveLauncher.getClassPathArchives(ExecutableArchiveLauncher.java:72)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:49)
at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)
Caused by: java.io.IOException: Unable to open nested jar file 'BOOT-INF/lib/semantics-1.0.jar'
at org.springframework.boot.loader.jar.JarFile.getNestedJarFile(JarFile.java:252)
at org.springframework.boot.loader.jar.JarFile.getNestedJarFile(JarFile.java:237)
at org.springframework.boot.loader.archive.JarFileArchive.getNestedArchive(JarFileArchive.java:104)
... 4 more
Caused by: java.lang.IllegalStateException: Zip64 archives are not supported
at org.springframework.boot.loader.jar.CentralDirectoryEndRecord.getNumberOfRecords(CentralDirectoryEndRecord.java:124)
at org.springframework.boot.loader.jar.JarFileEntries.visitStart(JarFileEntries.java:91)
at org.springframework.boot.loader.jar.CentralDirectoryParser.visitStart(CentralDirectoryParser.java:88)
at org.springframework.boot.loader.jar.CentralDirectoryParser.parse(CentralDirectoryParser.java:56)
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.createJarFileFromFileEntry(JarFile.java:290)
at org.springframework.boot.loader.jar.JarFile.createJarFileFromEntry(JarFile.java:260)
at org.springframework.boot.loader.jar.JarFile.getNestedJarFile(JarFile.java:248)
... 6 more
解决方案
Spring boot 将不支持 jar 中超过 65534 个文件。这是他们的代码。
public int getNumberOfRecords() {
long numberOfRecords = Bytes.littleEndianValue(this.block, this.offset + 10, 2);
if (numberOfRecords == 0xFFFF) {
throw new IllegalStateException("Zip64 archives are not supported");
}
return (int) numberOfRecords;
}
由于它的数据文件,将其保存在 jar 之外,这也将减少构建时间。
推荐阅读
- c# - Json反序列化未填充列表?C#
- c# - 获取活动的word文档对象
- c# - 如何从 C# 中的方法返回正确类型的继承类型?
- vim - Vim 键盘映射,用于移动与 `textwidth` 内部变量中包含的值一样多的字符
- html - 有没有办法在 Nativescript Angular 中显示带有可勾选图像的图像网格?
- spring-boot - org.apache.http.conn.ConnectTimeoutException:连接到 localhost:8761 超时
- java - 如何验证俄语字母?
- swift - 在内部函数中传递 CVarArg
- terraform - 将字符串或数组转换为 Terraform 中的映射?
- javascript - 为什么在将图像加载到画布时使用 style.display = 'none'