错误:无法找到或加载主类 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,