【问题标题】:Gradle 2.3 - BootRepackage with Zip64=true cannot find Start-ClassGradle 2.3 - Zip64=true 的 BootRepackage 找不到 Start-Class
【发布时间】:2015-07-07 21:23:45
【问题描述】:

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

我无法在从 jHipster 框架派生的项目中执行从 bootRepackage 生成的 war。话题还在Stackoverflow开启。

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

然后我将 zip64 属性设置为 true (我也必须在 jar { } 任务中这样做。在我的原始应用程序中但是我没有jar任务,只在war任务中设置)。 bootRepackage 任务成功完成,但是当我运行战争时,我得到 no Start-Class 错误

第一次运行它会起作用,因为总文件

./gradlew clean bootRepackage; java -jar build/libs/app-0.1-SNAPSHOT.war

第二次运行这个将不起作用,因为总文件 > 65535 和 zip64 = false

./gradlew clean bootRepackage; java -jar build/libs/app-0.1-SNAPSHOT.war

第三次运行它(等于替代一次)将起作用,因为总文件

rm src/main/resources/*; ./gradlew clean boot重新打包; java -jar build/libs/app-0.1-SNAPSHOT.war

此时我们的文件总数 > 65535 且 zip64 = false。我们将 zip64 属性更改为 true 并尝试再次 bootPackage

在 jar 和 war 任务的 build.gradle 中设置 zip64 = true。 ./gradlew clean boot重新打包; java -jar build/libs/app-0.1-SNAPSHOT.war

java.lang.IllegalStateException: No 'Start-Class' manifest entry specified in jar:file:../boot-repackage-test/build/libs/app-0.1-SNAPSHOT.war!/
        at org.springframework.boot.loader.archive.Archive.getMainClass(Archive.java:57)
        at org.springframework.boot.loader.ExecutableArchiveLauncher.getMainClass(ExecutableArchiveLauncher.java:69)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:61)
        at org.springframework.boot.loader.WarLauncher.main(WarLauncher.java:61)

总之,unzip 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

最好的问候,

佩德罗·杜索

【问题讨论】:

    标签: java spring gradle spring-boot


    【解决方案1】:

    Spring Boot 可执行 JAR 目前不支持 zip64 格式。我建议尝试重构您的应用程序,以便将资产打包成不同的嵌套 JAR(具有 Gradle shadow plugin 重新打包您的应用。

    【讨论】:

      猜你喜欢
      • 2014-04-27
      • 2018-12-10
      • 2013-12-05
      • 2018-12-03
      • 2021-03-21
      • 2018-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多