Spring Boot 故障:(ID:838926 df)未找到任何具有Main-Class清单项的jar文件

wqlqzqxt  于 2023-03-29  发布在  Spring
关注(0)|答案(5)|浏览(127)

在我的spring Boot 应用程序上运行gcloud app deploy时,在Cloud Build中发生此错误。

brccelvz

brccelvz1#

可能有一个或多个问题,因为你得到这个错误。为解决方案,请检查下面的事情-
1.您的app.yaml应该有如下的入口点和运行时信息-
runtime: java11
entrypoint: java -Xmx64m -jar blahblah.jar
1.你的pom.xml应该有appengine maven插件依赖

<plugin>
   <groupId>com.google.cloud.tools</groupId>    
   <artifactId>appengine-maven-plugin</artifactId>
   <version>2.2.0</version>
</plugin>


1.不要修改jar文件,如果你想替换任何配置使用命令-
jar uf blahblah.jar filename.yaml
1.确保你在pom.xml中有一个像这样的jar包-<packaging>jar</packaging>

4si2a6ki

4si2a6ki2#

我不小心删除了我的maven插件,所以不要删除它。

<plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
sauutmhj

sauutmhj3#

我能够通过添加以下内容为我的AppEngine + Gradle项目修复它

jar {
    enabled = false
    archiveClassifier = ''
}

到build.gradle文件。

8ftvxx2r

8ftvxx2r4#

尝试在pom.xml中注解出来打包成war文件,例如:

<!--  <packaging>war</packaging> -->

它为我解决了这个问题。很好的最小+可行的例子在这里:https://codelabs.developers.google.com/codelabs/cloud-app-engine-springboot#0

klr1opcd

klr1opcd5#

根本原因是打包的.jar文件在/META-INF/MANIFEST.MF中没有Main-Class条目。
我的原始MANIFEST.MF文件看起来像这样:

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven 3.8.6
Built-By: me
Build-Jdk: 19.0.1

对我来说,解决方案是添加maven-jar-plugin并手动配置mainClass

<plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>3.3.0</version>
        <configuration>
            <archive>
                <manifest>
                    <mainClass>my.main.MainClass</mainClass>
                </manifest>
            </archive>
        </configuration>
    </plugin>

这导致以下MANIFEST.MF

Manifest-Version: 1.0
Created-By: Maven JAR Plugin 3.3.0
Build-Jdk-Spec: 19
Main-Class: my.main.MainClass

您也可以检查https://www.baeldung.com/spring-boot-main-class以获得其他选项,但您必须使用spring-boot-starter-parent作为父...

相关问题