maven 打包后运行jar文件提示 no main manifest attribute

用maven打包java程序,当执行 java -jar 文件时提示 no main manifest attribute,此时需要在maven中配置主函数 main,配置方式如下:

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>com.hisense.main.Main</mainClass>   //主程序入口类,可以按住control,单机定位到该类
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
        </plugins>
    </build>

### 解决Maven打包生成的JAR文件带有版本号且缺少主清单属性的问题 对于遇到`no main manifest attribute`错误的情况,这通常意味着构建过程中未指定应用程序入口类。为了确保JAR文件不仅包含正确的版本信息还具备可执行性,需调整项目的`pom.xml`配置。 #### 修改POM文件以支持带版本号和Main-Class属性的JAR包创建 通过在`<build>`标签内定义特定于Spring Boot应用的插件设置来实现这一点: ```xml <build> <finalName>${project.artifactId}-${project.version}</finalName> <!-- 设置最终名称 --> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>${spring-boot.version}</version> <!-- 明确指明使用的Spring Boot版本 --> <configuration> <mainClass>com.example.YourApplicationClassName</mainClass> <!-- 替换为实际的应用程序启动类路径 --> <executable>true</executable> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build> ``` 上述配置做了如下几件事][^[^23]: - 使用`${project.artifactId}` 和 `${project.version}`动态组合成最终输出的JAR文件名; - 添加了`<mainClass>`元素用于声明哪个Java类作为程序入口点; - 设定了`spring-boot-maven-plugin`的具体版本,并启用了重新打包功能以便能够创建独立运行的fat-jar(即包含了所有依赖项的大而全的JAR); 完成这些更改之后,在命令行中输入 `mvn clean package` 来清理旧的目标目录并重新编译整个工程,从而得到一个既携带版本号又设置了Manifest Main-Class字段的新版JAR文件[^1]. #### 验证解决方案的有效性 一旦成功完成了以上步骤,则可以通过查看新产生的JAR文件中的MANIFEST.MF文件确认是否已经正确写入了必要的元数据。可以解压JAR文件或者直接读取其内部结构来进行验证。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值