jar包中指定main方法、依赖运行

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

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

 

1:指定main方法

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

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

 (2)如果是maven的话,可以在pom.xml文件指定main方法

 
  1.  
    <build>
  2.  
    <plugins>
  3.  
    <plugin>
  4.  
    <groupId>org.apache.maven.plugins</groupId>
  5.  
    <artifactId>maven-assembly-plugin</artifactId>
  6.  
    <version>2.3</version>
  7.  
    <configuration>
  8.  
    <appendAssemblyId>false</appendAssemblyId>
  9.  
    <descriptorRefs>
  10.  
    <descriptorRef>jar-with-dependencies</descriptorRef>
  11.  
    </descriptorRefs>
  12.  
    <archive>
  13.  
    <manifest>
  14.  
    <addClasspath>true</addClasspath>
  15.  
    <classpathPrefix>lib/</classpathPrefix>
  16.  
    <mainClass>io.test.main.MainOfDiskMount</mainClass>
  17.  
    </manifest>
  18.  
    </archive>
  19.  
    </configuration>
  20.  
    <executions>
  21.  
    <execution>
  22.  
    <id>make-assembly</id>
  23.  
    <phase>package</phase>
  24.  
    <goals>
  25.  
    <goal>assembly</goal>
  26.  
    </goals>
  27.  
     
  28.  
    </execution>
  29.  
    </executions>
  30.  
    </plugin>
  31.  
    </plugins>
  32.  
    </build>
 

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

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

java -jar ****.jar aaa bbb ccc
 

 

2:在MANIFEST.MF中指定,有多个main方法,指定特定main方法运行

java -cp mplus-service-jar-with-dependencies.jar com.smbea.dubbo.bin.Console aaa bbb
java -classpath ****.jar ****.****.className [args]

java -cp命令介绍

java -cp .;c:\dir1\lib.jar Test

-cp和-classpath 一样,是指定类运行所依赖其他类的路径,通常是类库,jar包之类,需要全路径到jar包,window上";"分隔,linux上是":"分隔。不支持通配符,需要列出所有jar包,用"."代表当前路径。虽然现在都有eclipse之类的IDE了,但有时候后会手工编译和运行一些程序,很多人包括多年开发经验的人都不知道怎么在命令行参数运行类。 

3.指定依赖包启动

zookeeper-learn-1.0-SNAPSHOT.jar是执行的jar包;

(1)java -classpath .;E:\local\lib\zookeeper-3.4.10.jar;E:\local\lib\zookeeper-learn-1.0-SNAPSHOT.jar;E:\local\lib\slf4j-api-1.6.1.jar com.zhujq.learn.zookeeperdemo.watcher.Master   

(2)java -classpath  ‘.;E:\local\lib\* ’   com.zhujq.learn.zookeeperdemo.watcher.Master 

(3)编译:javac -Djava.ext.dirs=./lib Test.java  或  javac -Djava.ext.dirs=D:/javacode/lib

 

          运行:java -Djava.ext.dirs=./lib Test 

 

 

 
 
 

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



参考:

https://blog.csdn.net/xiaoguangtouqiang/article/details/82182654

https://blog.csdn.net/zhujq_icode/article/details/80743646

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值