JavaFX或Spring项目构建jar包后运行时app.jar没有主清单属性(三部曲之一:解决这个报错后你大概率会遇到三部曲后两部的报错)

你可能会在构建一个spring boot项目和一个JavaFx项目中遇到这样的问题,当我通过maven中的package打包为jar后,直接运行提示你 没有主清单属性

这通常的原因有如下:

JAR 文件中的 MANIFEST.MF 文件缺少 Main-Class 属性

     每个 JAR 文件都有一个 META-INF/MANIFEST.MF 文件,这个文件包含关于 JAR 文件的一些元数据信息。为了使 JAR 文件可以作为可执行文件运行,MANIFEST.MF 文件中必须包含一个 Main-Class 属性,指定要运行的主类。系统在运行时会先根据这个文件中的main-class中的项目结构信息去找你的 启动类@SpringbootApplication或者fx项目的HelloApplication.java。找不到它就会提示你主清单属性找不着。

所以是什么导致的MANIFEST.MF 文件缺少 Main-Class 属性,这个原因就有很多了,就像是抽烟和喝酒都会增加患癌机会一样。缺少主清单属性是一种结论,只是影响他的原因不同:

首先进入idea打开你的target文件点击你的jar包:

      如果使用构建工具(如 Maven、Gradle)来生成 JAR 文件,大概率是你构建配置文件(如 pom.xmlbuild.gradle)中没有正确配置 Main-Class 属性。

如果是sb项目spring项目,可以直接使用构建插件,构建插件可以帮助你自动化完成构建:

    <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>

如果不是spring项目,是FX项目或者你不想用sb插件那你需要手动的告诉maven你要添加主类信息

我们删掉自带的构建插件后,添加这段依赖

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.4.1</version>
<configuration>
<archive>
<manifest>
<mainClass>com.fox.toolkitforstudents.HelloApplication</mainClass>
</manifest>
</archive>
</configuration>
</plugin>

通过这种方式将手动的创建主类信息,然后clear之后再package,你会发现,生成的jar内:

接下来我们就可以尝试运行这个jar包了

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值