错误:无法找到或加载主类 Maven Spring Boot 应用程序 - 可执行 JAR

Posted

技术标签:

【中文标题】错误:无法找到或加载主类 Maven Spring Boot 应用程序 - 可执行 JAR【英文标题】:Error: Could not find or load main class Maven Spring Boot Application - Executable JAR 【发布时间】:2020-03-26 02:28:18 【问题描述】:

我正在尝试运行可执行 jar,但收到以下消息:

Could not find or load main class

这是 MANIFEST.MF 文件的内容:

Manifest-Version: 1.0
Created-By: Apache Maven Built-By: Administrator
Build-Jdk: 11.0.3
Class-Path: spring-boot-starter-batch-2.2.0.RELEASE.jar spring-boot-starter-1.5.6.RELEASE.jar spring-boot-1.5.6.RELEASE.jar spring-boot-autocon
     figure-1.5.6.RELEASE.jar .......
Main-Class: EAB.ActiveTeam.Exporter.App

当我在网上搜索时,我真的被困住了,尝试了许多解决方案来让我的可执行 JAR 运行!

请帮忙,我花了 5 个多小时试图修复,但没有成功!

这是我的 POM.xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.1.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>EAB.ActiveTeam.Exporter</groupId>
    <artifactId>EAB.ActiveTeam.Exporter</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>EAB.ActiveTeam.Exporter</name>
    <description>EAB.ActiveTeam.Exporter</description>

    <properties>
        <java.version>11</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

    <build>
        <plugins>
      <plugin>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-maven-plugin</artifactId>
      <configuration>
        <mainClass>EAB.ActiveTeam.Exporter.App</mainClass>
        <layout>jar</layout>
        <outputDirectory>../libs</outputDirectory>
      </configuration>
        <executions>
          <execution>
            <id>repackage</id>
            <goals>
              <goal>repackage</goal>
            </goals>
            <configuration>
              <classifier>exec</classifier>
            </configuration>
          </execution>
        </executions>
      </plugin>
        </plugins>
    </build>
</project>

【问题讨论】:

你用来执行jar的命令是什么 java -jar EAB.ActiveTeam.Exporter-1.0-SNAPSHOT-jar-with-dependencies.jar 主类:EAB.ActiveTeam.Exporter.App 。这是主类的正确包名和类名吗? 是的,没错。 ***.com/questions/23217002/… 检查这是否有帮助? 【参考方案1】:

当涉及到 Spring Boot 应用程序时,您无法创建常规 jar 文件,因为 Spring Boot 应用程序 jar 根本不是 jar。它没有 jar 的内部目录布局(例如所有依赖项都在 BOOT-INF/lib 中),并且还有一些其他细微差别。

所以我认为问题出在这里的 maven 上。

与其尝试“自己”创建 jar 并在其中添加所有依赖项,不如使用 spring boot maven plugin:

它“知道”如何正确创建 spring boot jar。 默认情况下,它还将解析您的“主”文件(带有方法 main@SpringBootApplication 注释的文件),但是您可以在插件配置中指定它以确保安全。

然后您就可以使用该项目:

java -jar <Name_of_your_jar>

【讨论】:

嗨,我遵循了您的解决方案,但是当我运行 jar“没有主清单属性,在 EAB.ActiveTeam.Exporter-1.0-SNAPSHOT.jar”时收到以下消息 你是否从 pom 中删除了所有其他插件?用 WinRar 打开罐子,看看里面有什么 META-INF/MANIFEST.MF META-INF/EAB/EAB/ActiveTeam/EAB/ActiveTeam/Exporter/META-INF/maven/META-INF/maven/EAB.ActiveTeam.Exporter/META -INF/maven/EAB.ActiveTeam.Exporter/EAB.ActiveTeam.Exporter/EAB/ActiveTeam/Exporter/App.class EAB/ActiveTeam/Exporter/CustomerItemProcessor.class META-INF/maven/EAB.ActiveTeam.Exporter/EAB.ActiveTeam .Exporter/pom.properties META-INF/maven/EAB.ActiveTeam.Exporter/EAB.ActiveTeam.Exporter/pom.xml EAB/ActiveTeam/Exporter/BatchConfiguration$1$1.class EAB/ActiveTeam/Exporter/BatchConfiguration.class EAB/ActiveTeam /Exporter/BatchConfiguration$1.class 以上是jar内容 Manifest-Version: 1.0 Created-By: Apache Maven 3.6.1 Built-By: Administrator Build-Jdk: 11.0.3

以上是关于错误:无法找到或加载主类 Maven Spring Boot 应用程序 - 可执行 JAR的主要内容,如果未能解决你的问题,请参考以下文章

Maven 错误:无法找到或加载主类 org.codehaus.plexus.classworlds.launcher.Launcher

运行maven-assembly创建的可执行jar:错误:无法找到或加载主类

Gradle(包装器)+ STS + Spring Boot:错误:无法找到或加载主类 1.1,

无法找到或加载主类 org.apache.maven.wrapper.MavenWrapperMain

通过 gradle 构建后无法找到或加载主类

Kotlin Gradle 无法找到或加载主类