将 SpringBoot 从 2.4.X 升级到 2.6.X 后无法 运行 我的 jar

Can't run my jar after upgrading SpringBoot from 2.4.X to 2.6.X

我最近将我的库从 gradle 5.X 升级到 7.3.1,并将 Spring-Boot 从 2.4.X 升级到 2.6.X但我面临一个问题。我正在使用 gradle build 来创建一个 jar 并在我的服务器上执行这个 jar,它在 Spring-Boot 2.4.X 上运行良好,但现在在 2.6.X 上运行良好我遇到了一些问题:

no main manifest attribute

所以我添加到我的 build.gradle

jar {
   manifest {
       attributes "Main-Class": "my.package.MainClass"
   }

   from {
       configurations.compileClasspath.collect { it.isDirectory() ? it : zipTree(it) }
       configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
   }
}

现在我遇到了错误

Could not find or load main class my.package.MainClass

如果我切换回 2。4.X 它工作正常。 我的罐子来自:

所以我尝试用 shadowJar 创建一个 fat jar 并得到这个错误

ERROR org.springframework.boot.SpringApplication - Application run failed Dec 21 10:04:09 vps-11602ed1 project[12706]: org.springframework.context.ApplicationContextException: Unable to start web server; nested exception is org.springframework.context.ApplicationContextException: Unable to start ServletWebServerApplicationContext due to missing ServletWebServerFactory bean.

如果有人得到关于如何使其与 Spring-boot 2 一起工作的答案。6.X。

提前致谢

我发现了问题。当我从 springboot 2.4.X 升级到 2.6.X 时,现在 gradle build 正在用我的 casual jar 生成一个新的“普通”jar。我将我的罐子重命名为相同的名称。所以我没有使用最大的罐子,而是使用了最小的。刚刚将其添加到我的 gradle.build:

jar {
enabled = false
}

所以现在,它没有创建“普通”jar,一切正常