使用maven创建的普通java项目,打包jar后运行,no main manifest attribute, in XXX.jar
问题复现
- 使用
IntelliJ IDEA
创建了普通的maven项目 - 编写hello world
package com.test; public class Main { public static void main(String[] args) { System.out.println("Hello world!"); } }
- 运行
报错:no main manifest attribute, in xxxxx.jar
原因
根据规范,一般情况下, jar 包里面要有个 MANIFEST.MF文件
文件要中指定 Main-Class项
运行jar文件的时候才能找到主类
解决
- 方法一: 手动补充配置(不推荐)
- 方法二: 直接使用maven提供的
maven-jar-plugin
插件
插件配置在pom中即可<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.test</groupId> <artifactId>xxxxxx</artifactId> <version>1.0-SNAPSHOT</version> <properties> <maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <build> <plugins> <!-- 这里添加插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.4.1</version> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> <!-- 你的主类的实际路径 --> <mainClass>com.test.Main</mainClass> </manifest> </archive> </configuration> </plugin> </plugins> </build> </project>