执行jar包中指定main方法

执行jar包中指定main方法通过maven将应用打成jar包之后,可以通过java-jar ***.jar来执行,会运行指定的main方法,主要是 MANIFEST.MF中指定的main方法;那么如果有多个main方法的时候如何运行指定的main方法哪,可以通过下面命令去执行java-classpath****.jar****.****.className[args]这里的****.****指的是…

大家好,又见面了,我是你们的朋友全栈君。

通过maven将应用打成jar包之后,可以通过java -jar  ***.jar来执行,会运行指定的main方法,主要是 MANIFEST.MF 中指定的 main 方法;那么如果有多个main方法的时候如何运行指定的main方法哪,可以通过下面命令去执行

java -classpath ****.jar ****.****.className [args]

这里的****.****指的是包名;

****.className是类名称;

args指传递进去的参数;

综上:运行jar有两种情况

1>maven打包之后通过MANIFEST.MF指定main方法

java -jar mplus-service-jar-with-dependencies.jar

 如果是maven的话,可以在pom.xml中添加如下代码来指定main方法

<build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>2.3</version>
        <configuration>
          <appendAssemblyId>false</appendAssemblyId>
          <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
          </descriptorRefs>
          <archive>
            <manifest>
              <addClasspath>true</addClasspath>
              <classpathPrefix>lib/</classpathPrefix>
              <mainClass>io.test.main.MainOfDiskMount</mainClass>
            </manifest>
          </archive>
        </configuration>
        <executions>
          <execution>
            <id>make-assembly</id>
            <phase>package</phase>
            <goals>
              <goal>assembly</goal>
            </goals>

          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

主要是这里面的mainfest代码块;mainClass中指定执行的main方法的包名+类名;然后指定maven package命令,可以看到打包出来的jar中的META-INF中MANIFEST.MF的内容添加了一项内容

执行jar包中指定main方法

这里面就是我们在pom.xml中指定的main方法;然后打包成jar运行的时候,如果要添加参数,直接添加在后面就可以了;

java -jar mplus-service-jar-with-dependencies.jar aaa bbb

 

2>如果没有在MANIFEST.MF中指定,jar中有多个main方法,指定运行某个特定的main方法的命令

java -cp mplus-service-jar-with-dependencies.jar com.smbea.dubbo.bin.Console aaa bbb

 

然后再main方法中添加打印的逻辑,来看下执行的参数情况

执行jar包中指定main方法

其实就是把aaa,bbb的值作为args参数传递进去了;

总结:通过maven 把项目打包成jar,然后运行main方法,有两种情况,一种是在MANIFEST.MF中指定运行的main方法;另外一种是通过命令行指定运行的main方法的包;同时可以添加对应的参数传递到main方法中去;

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/138390.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 基于最简单的FFmpeg采样读取内存读写:存储转

    基于最简单的FFmpeg采样读取内存读写:存储转

    2022年1月1日
  • mpc hc设置_mpc是指什么

    mpc hc设置_mpc是指什么MPC-HC播放器设置启动 MPC-HC ,先设置语言:(最新版本会自动选择对应的系统语言)View-Language-Chinese=>界面变为中文进 视图-选项:播放器:建议勾选「保存设置至.ini文件中」格式:建议勾选全部视频类格式,其中 QuickTime 建议采用「DirectShow」滤镜(双击右侧,在下拉框中即可选择),播放性能会

    2022年9月14日
  • Java中,为什么byte类型的取值范围为-128~127?

    Java中,为什么byte类型的取值范围为-128~127?在学习Java基础语法的时候,初学者的我们可能都会有这么一个疑问为什么byte类型的取值范围为什么是[-128,127]而不是[-127,127]。01111111表示最大的数值:127,因为第一位是符号位,所以11111111应该是最小的数值:-127,不是这样才对?在解释这个问题之前我们需要了解几个概念:机器数、真值、原码、反码、补码机器数:一个数在计算机中的二进制表示形式,叫做这个数的机器

    2022年6月15日
  • jQuery雷达扫描切换幻灯片代码

    jQuery雷达扫描切换幻灯片代码

    2021年9月8日
  • 常量表达式概念与用处的关系_常量和变量有什么异同点

    常量表达式概念与用处的关系_常量和变量有什么异同点1)什么叫常量表达式?        在编译期间进行求值的表达式。    1、字面值常量是常量表达式;如123,‘a’,3.14等    2、用常量表达式初始化的const对象也是常量表达式。如intconsta=5;语句中a就是常量表达式2)什么地方会用到常量表达式?        就目前所知道的有三个,后面如果发现再新增。

    2022年9月29日
  • 手机丅f丅lcd什么屏_手机丅f丅lcd什么屏_全球首款屏下相机,90Hz OLED屏+4220mAh「建议收藏」

    手机丅f丅lcd什么屏_手机丅f丅lcd什么屏_全球首款屏下相机,90Hz OLED屏+4220mAh「建议收藏」在传统非全面屏手机时,指纹很好实现,放个传感器在屏幕下方区域就行了,但是全面屏时代,很多手机将指纹改为后置或者侧边指纹,不过后置太难看了,侧边指纹体验不是很好,还是屏幕指纹体验最好,OLED非常轻薄,而且具有一定的光通透性,因此可以实现屏幕指纹,指纹是解决了,但是前置摄像头的放置又是一个问题,刘海屏、水滴屏和挖孔屏都不能形成完美的真全面屏。不过功夫不负有心人,任何再难的技术,只要敢想就能实现,敢做…

    2022年8月10日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号