首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用Maven指定MANIFEST.MF的主类来构建JAR?

Maven是一个流行的项目管理工具,可以帮助开发人员自动化构建、测试和部署Java项目。使用Maven构建JAR文件时,可以通过指定MANIFEST.MF文件中的主类来确保JAR文件可以正确执行。

要使用Maven指定MANIFEST.MF的主类来构建JAR,可以按照以下步骤进行操作:

  1. 在项目的pom.xml文件中,添加以下插件配置:
代码语言:txt
复制
<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-jar-plugin</artifactId>
      <version>3.2.0</version>
      <configuration>
        <archive>
          <manifest>
            <mainClass>com.example.MainClass</mainClass>
          </manifest>
        </archive>
      </configuration>
    </plugin>
  </plugins>
</build>

在上述配置中,将com.example.MainClass替换为你项目中的实际主类。

  1. 执行Maven命令进行构建:
代码语言:txt
复制
mvn clean package

该命令将会编译、测试、打包并生成JAR文件。

  1. 在target目录下找到生成的JAR文件,使用解压缩工具(如WinRAR)打开,可以看到其中的META-INF目录下有一个MANIFEST.MF文件。
  2. 打开MANIFEST.MF文件,确认其中的Main-Class属性是否已经被正确设置为你指定的主类。

通过以上步骤,你可以使用Maven指定MANIFEST.MF的主类来构建JAR文件。这样生成的JAR文件可以通过命令行或其他方式直接执行。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

java项目中jar启动执行日志报错:no main manifest attribute, in wwwwwwrootsnow-serverz-se

z系统的时候也遇到这个问题,那么如何解决呢、这个问题基本就是构建脚本中没有指定主类,而且我们发现打包的大小明显小于正常大小,造成的原因有以下3种可能:1,maven打包中多余true配置跳过了主程序2,...第二种原因引起方法一:手动添加或修改Manifest文件(没有使用maven)以优雅草蜻蜓z系统为例,我们的主类com.yyc.songshu.manager那么我就创建一个Manifest.mf文件里面的内容就是...f(指定文件名)f参数用于指定要创建的 JAR 文件的名称。如果不使用这个参数,jar工具会根据标准输入来确定文件名,但这样可能会导致一些混淆。...例如,在一个可执行的 JAR 文件中,清单文件中的主类名称是非常关键的,因为当你运行这个 JAR 文件时,Java 虚拟机会根据清单文件中的主类来启动应用程序。...但是我们打包是用的maven 因此需要以下方法二方法二:使用maven构建工具使用maven构建工具来管理Java项目的情况,你可以在构建脚本中指定主类。

8000
  • 浅谈 java 中构建可执行 jar 包的几种方式

    会直接报错:无法找到主类或者找不到 xxx 依赖包/类,这是由于你没有定义 MANIFEST.MF 资源描述文件所致, 或者你直接把依赖的 jar 包打进了你最终的 jar,而这种嵌套的依赖...下面我们看看如何在 eclipse 中构建一个可执行的 jar 包。...来构建,在 maven 工程中,我们也可以很方便的打包成可执行的 jar 包。...maven-jar-plugin 可以做很多事情,但在这里,我们只对使用它来修改默认 MANIFEST.MF 文件的内容感兴趣。...classpathPrefix:如果您计划在同一目录下包含有您的所有依赖项,作为您将构建的 JAR,那么您可以忽略它;否则使用  classpathPrefix 来指定所有依赖 JAR 文件的前缀。

    3.9K50

    SpringBoot - 探究Spring Boot应用是如何通过java -jar 启动的

    的源码中指定了整个应用的启动类; 简单来说: java -jar会去找jar中的manifest文件,去找到Main-Class对应的真正的启动类; 那看看去吧 ?...---- JarLauncher工作流程 从MANIFEST.MF可以看到Main函数是JarLauncher,下面来分析它的工作流程。...(2)以第一步构建的ClassLoader加载MANIFEST.MF文件中Start-Class指向的业务类,并且执行静态方法main。进而启动整个程序。...至此,才执行我们应用程序主入口类的main方法,所有应用程序类文件均可通过/BOOT-INF/classes加载,所有依赖的第三方jar均可通过/BOOT-INF/lib加载。 ?...通过spring-boot-plugin 生成了MANIFEST.MF , main-class 指定运行java -jar的主程序把依赖的jar文件 打包在fat jar. ?

    1.5K30

    改变maven打包路径_Maven打包技巧「建议收藏」

    生命周期阶段,Maven为jar项目调用了maven-jar-plugin,为war项目调用了maven-war-plugin,换言之,packaging直接影响Maven的构建生命周期。...jar 为了帮助所有Maven用户更方便的使用Maven中央库中海量的资源,中央仓库的维护者强制要求开源项目提交构件的时候同时提供源码包和Javadoc包。...关于项目的依赖,它很聪明地将依赖JAR文件全部解压后,再将得到的.class文件连同当前项目的.class文件一起合并到最终的CLI包中,这样,在执行CLI JAR文件的时候,所有需要的类就都在Classpath...fileSets允许用户通过文件或目录的粒度来控制打包。...小结 打包是项目构建最重要的组成部分之一,本文介绍了主流Maven打包技巧,包括默认打包方式的原理、如何制作源码包和Javadoc包、如何制作命令行可运行的CLI包、以及进一步的,如何基于个性化需求自定义打包格式

    2.6K20

    Spring Boot Maven Plugin打包异常及三种解决方法:Unable to find main class

    【背景】spring-boot项目,打包成可执行jar,项目内有两个带有main方法的类并且都使用了@SpringBootApplication注解(或者另一种情形:你有两个main方法并且所在类都没有使用...因为spring-boot:repackage目标(goal)(下文会说)被绑定在package构建阶段(phases),而package阶段在install阶段之前,指定构建阶段之前的阶段都会执行。...,也就是jar里面的清单文件),此文件管理着主类(Main-Class)和开始类(Start-Class)入口。...来张图直观的感受下,对应使用上面xml配置打包后的清单文件(MANIFEST.MF): ?   layout属性默认不需要配置,插件会自动推断。...简单点说,这货重新打包个可执行的jar/war,可以在命令行使用-jar执行。如果指定layout为NONE那就没有主类只是打个普通的jar(不可执行),一般不会这么做。

    15.8K20

    Jpackage-制作无需预装Java环境的Jar可执行程序

    这篇文章我们会先学习如何将 Java 程序打包成一个可执行的 Java JAR 文件。然后演示如何使用这个 JAR 文件生成 Windows、Linux、MacOS 上的可执行程序。...我们将使用 Java 自带的 jar 命令行工具来创建 JAR 文件。然后学会使用 jpackage 工具创建各个系统上的可执行程序。...一个可执行的 jar 文件需要包含一个 main 类作为程序的入口,并在 MANIFEST.MF 文件中指定 但是为了运行 jar 格式的应用程序,必须有一个Java 运行时环境(JRE)。...详细介绍 jar 命令的使用不是本文目的,下面给出 jar 命令的常见用法。 创建一个输出 Hello 的Java 类用于测试。...首先,介绍如何使用 Java 的 jar 命令行工具创建一个可执行的 JAR 文件,这需要编写 Java 程序,配置 MANIFEST.MF 文件,并使用 jar 命令创建包含主类的 JAR 文件。

    70510

    SpringBoot打包部署解析:jar包的生成和结构

    在享受便利的同时,我们也需要多少了解一下 Spring Boot 的 jar 包是如何生成的,以及如何通过 jar 包启动运行。...RepackageMojo 类就是 提供重新打包现有的 jar 或 war 包文件,使得它们可以使用 javajar 来进行启动。 RepackageMojo 的 execute 方法如下。...,如果不指定, 则会查找第一个包含 main 方法的类 // repackage 最后将会设置 org. springframework . boot ....很显然,使用了相同的实现类来处理 ZIP 文件和 DIR 文件。 jar 类型为 Layouts 类的内部类,可以简单看一下 jar 类型的处理类都包含 了哪些内容。...其中,Manifest.MF 文件通常被用来定义扩展或档案打包相关数据,它是一个元数据文件,数据格式为名/值对。一个可执行的 jar 文件需要通过该文件来指出该程序的主类。

    1.8K30

    Java - Maven 项目打包详解

    在 Java 开发中,Maven 是一款非常重要的项目管理工具,它不仅能够帮助我们管理项目的依赖关系,还提供了强大的项目打包功能。本文将详细介绍如何使用 Maven 对 Java 项目进行打包。...clean:是一个 Maven 生命周期阶段,它会清理项目生成的目标目录(通常是 target 目录),删除之前构建过程中生成的文件,如编译后的类文件、打包后的 jar 包等,以确保本次构建是在一个全新的环境下进行...生成可执行 JAR 包 默认情况下,Maven 打包生成的 JAR 包是普通的类库 JAR 包,不能直接通过 java -jar 命令运行。...如果要生成可执行的 JAR 包,需要在 pom.xml 中配置 maven-jar-plugin 插件,并指定主类: ...MANIFEST.MF 文件中, 元素指定了项目的主类。

    22810

    springboot的jar为何能独立运行

    -0.0.1-SNAPSHOT.jar来分析jar文件能够独立启动的原因; java -jar做了什么 先要弄清楚java -jar命令做了什么,在官网找到了该命令的描述: If the -jar option...和资源文件; 在manifest文件中有Main-Class的定义; Main-Class的源码中指定了整个应用的启动类;(in its source code) 小结一下: java -jar会去找jar...,这个和前面的java官方文档对应上了,正是这个JarLauncher类的代码中指定了真正的启动类; 疑惑出现 在MANIFEST.MF文件中有这么一行内容: Start-Class: com.bolingcavalry.springbootstarterdemo.Springbootstarter...是如何产生的,如下图,maven插件生成的jar文件中,有常见的class、jar,也有符合java规范的MANIFEST.MF文件,并且,还在MANIFEST.MF文件中额外生成了名为Start-Class...的配置,这里面是我们编写的应用启动类SpringbootstarterdemoApplication: [在这里插入图片描述] 启动类是JarLauncher,它是如何与MANIFEST.MF文件关联的呢

    76330

    执行jar包中指定main方法

    通过maven将应用打成jar包之后,可以通过java -jar ***.jar来执行,会运行指定的main方法,主要是 MANIFEST.MF 中指定的 main 方法;那么如果有多个main方法的时候如何运行指定的...****指的是包名; ****.className是类名称; args指传递进去的参数; 综上:运行jar有两种情况 1>maven打包之后通过MANIFEST.MF指定main方法 java -jar...mplus-service-jar-with-dependencies.jar 如果是maven的话,可以在pom.xml中添加如下代码来指定main方法 ...main方法的包名+类名;然后指定maven package命令,可以看到打包出来的jar中的META-INF中MANIFEST.MF的内容添加了一项内容 这里面就是我们在pom.xml中指定的main...MANIFEST.MF中指定,jar中有多个main方法,指定运行某个特定的main方法的命令 java -cp mplus-service-jar-with-dependencies.jar com.smbea.dubbo.bin.Console

    3.3K10

    maven常用打包命令

    大家好,又见面了,我是你们的朋友全栈君。 maven常用打包命令 1、mvn compile 编译,将Java 源程序编译成 class 字节码文件。...7、mvn clean pakage -Dmaven.test.skip=true 动态 web工程打 war包,Java工程打 jar 包 ,并且抛弃测试用例打包 Maven可以使用mvn package...指令对项目进行打包,如果使用java -jar xxx.jar执行运行jar文件,会出现”no main manifest attribute, in xxx.jar”(没有设置Main-Class)、...要想jar包能直接通过java -jar xxx.jar运行,需要满足: 1、在jar包中的META-INF/MANIFEST.MF中指定Main-Class,这样才能确定程序的入口在哪里; 2、要能加载到依赖包...--用于指定加载的主类--> org.springframework.boot spring-boot-maven-plugin</artifactId

    1.8K10

    springboot的jar为何能独立运行

    -SNAPSHOT.jar来分析jar文件能够独立启动的原因; java -jar做了什么 先要弄清楚java -jar命令做了什么,在官网找到了该命令的描述: If the -jar option...和资源文件; 在manifest文件中有Main-Class的定义; Main-Class的源码中指定了整个应用的启动类;(in its source code) 小结一下: java -jar会去找...,这个和前面的java官方文档对应上了,正是这个JarLauncher类的代码中指定了真正的启动类; 疑惑出现 在MANIFEST.MF文件中有这么一行内容: Start-Class: com.bolingcavalry.springbootstarterdemo.Springbootstarter...是如何产生的,如下图,maven插件生成的jar文件中,有常见的class、jar,也有符合java规范的MANIFEST.MF文件,并且,还在MANIFEST.MF文件中额外生成了名为Start-Class...的配置,这里面是我们编写的应用启动类SpringbootstarterdemoApplication: 启动类是JarLauncher,它是如何与MANIFEST.MF文件关联的呢?

    41830

    Java Agent 简介

    其实 Java Agent 一点都不神秘,也是一个 Jar 包,只是启动方式和普通 Jar 包有所不同,对于普通的Jar包,通过指定类的 main 函数进行启动,但是 Java Agent 并不能单独启动...我们可以使用 Agent 技术构建一个独立于应用程序的代理程序,用来协助监测、运行甚至替换其他 JVM 上的程序,使用它可以实现虚拟机级别的 AOP 功能。...程序的 main 方法执行之前执行 * * @param agentArgs * @param inst Agent技术主要使用的 api,我们可以使用它来改变和重新定义类的行为...,需要一些特殊的配置,例如指定 Agent 的启动类等。...,即使新建了 MANIFEST.MF 文件,仍然需要配置 maven-assembly-plugin 信息,否则 MANIFEST.MF 信息会被 Maven 生成的信息覆盖掉。

    97530

    TestOps自动化学习第三天

    那就让我一一道来: 问题:run as maven install后,提示无法找到或加载主类,如何解决?...是因为我们项目的pom.xml中没有指定目标,对于maven来说,没有指定目标的前提下,那么默认打包出来的就是jar包。可以使用packaging进行指定打包类型。...是因为我们同学不懂install到底是干什么的,所以六道老师专门讲解了前面关于maven的Goal的知识。 再来看问题:提示无法找到或加载主类 加载主类是干什么的?...在生成的jar包,要有一个可以运行的main类。必须在jar包中指定main类是谁,不然则报错: 那怎么指定主类呢?...需要在MANIFEST.MF文件中添加Main-Class:类路径。 ok,加上主类后,就可以进行install了。

    22230

    maven 插件之 maven-shade-plugin,解决同包同名 class 共存问题的神器

    Maven 构建生命周期的 package 阶段绑定,那么当 Maven 执行 mvn package 时会自动触发 maven-shade-plugin;使用很简单,在 pom.xml 添加该插件依赖即可...除了手动指定 filter 外,此插件还支持自动移除项目中没有使用到的依赖类,以此来最小化 uber jar 的体积;configuration 配置如下 <minimizeJar...重定位 class 如果 uber-jar 被其他项目依赖,而我们的 uber-jar 又是保留了依赖 jar 的 class 的全类名,那么就可能类重复而导致类加载冲突;比如项目A依赖了我们的 maven-shade-plugin-demo...,虽然两个 class 同名了,但功能完全不一样,另一个未被加载的 class 的功能则用不了,如果想同时使用这两个同名 class 的功能,我们该如何处理?...甲方扔给两个存在包名与类名均相同的Jar包,要在工程中同时使用怎么办?

    17210
    领券