Java Gradle 2.3-Zip64=true的BootRepackage找不到开始类

Java Gradle 2.3-Zip64=true的BootRepackage找不到开始类,java,spring,gradle,spring-boot,Java,Spring,Gradle,Spring Boot,(我最初在中发布了这个,但我在这里复制它,因为我认为它有更多的可见性) 我无法在jHipster框架派生的项目中执行从bootRepackage生成的war。这个话题仍在讨论中 我创建了一个小应用程序,并把它放在上面,以帮助您解决这个问题。按照这些步骤,我相信您也可以重现问题。我首先打包一个简单的Spring应用程序,然后运行生成的war。这将在资源文件夹中创建66000个文件。再次打包同一个应用程序将失败,因为第二次打包的文件超过65535个。我们通过清理资源文件夹并再次成功引导重新打包来确认

(我最初在中发布了这个,但我在这里复制它,因为我认为它有更多的可见性)

我无法在jHipster框架派生的项目中执行从bootRepackage生成的war。这个话题仍在讨论中

我创建了一个小应用程序,并把它放在上面,以帮助您解决这个问题。按照这些步骤,我相信您也可以重现问题。我首先打包一个简单的Spring应用程序,然后运行生成的war。这将在资源文件夹中创建66000个文件。再次打包同一个应用程序将失败,因为第二次打包的文件超过65535个。我们通过清理资源文件夹并再次成功引导重新打包来确认这一点

然后我将zip64属性设置为true(我也必须在jar{}任务中进行设置。但是在我的原始应用程序中,我没有jar任务,只在war任务中进行设置)。bootRepackage任务成功完成,但是当我运行war时,出现了无开始类错误

第一次运行此操作将有效,因为总文件数<65535且zip64=false

./gradlew清洁引导重新包装;java-jarbuild/libs/app-0.1-SNAPSHOT.war

第二次运行此操作将不起作用,因为总文件数>65535且zip64=false

./gradlew清洁引导重新包装;java-jarbuild/libs/app-0.1-SNAPSHOT.war

第三次运行(相当于备选方案一)将有效,因为总文件数<65535且zip64=false

rm src/main/resources/*/gradlew清洁靴包装;java-jarbuild/libs/app-0.1-SNAPSHOT.war

此时,我们的文件总数大于65535,zip64=false。我们将zip64属性更改为true,并再次尝试对其进行引导打包

在jar和war任务中的build.gradle中设置zip64=true。 ./gradlew清洁引导重新包装;java-jarbuild/libs/app-0.1-SNAPSHOT.war

总之,
解压app-0.1-SNAPSHOT.war&&cat META-INF/MANIFEST.MF
将产生:

Manifest-Version: 1.0
Start-Class: org.Application
Spring-Boot-Version: 1.2.3.RELEASE
Main-Class: org.springframework.boot.loader.WarLauncher
致以最良好的祝愿


Pedro Dusso

Spring Boot可执行JAR目前不支持zip64格式。我建议您尝试重新构造应用程序,以便将资产打包到不同的嵌套JAR中(使用
Manifest-Version: 1.0
Start-Class: org.Application
Spring-Boot-Version: 1.2.3.RELEASE
Main-Class: org.springframework.boot.loader.WarLauncher