您当前的位置: 首页 >  Java

Linux小百科

暂无认证

  • 0浏览

    0关注

    1185博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

介绍java -cp & java -jar的区别

Linux小百科 发布时间:2021-07-22 17:11:29 ,浏览量:0

java -cp 和 -classpath 一样,是指定类运行所依赖其他类的路径,通常是类库,jar包之类,需要全路径到jar包,window上分号“;”

java -cp & java jar格式

java -cp和-classpath一样,是指定类运行所依赖其他类的路径,通常是类库,jar包之类,需要全路径到jar包,window上分号“;” 格式:java -cp .;myClass.jar packname.mainclassname 表达式支持通配符,例如:

java -cp .;c:\classes01\myClass.jar;c:\classes02\*.jar packname.mainclassname
java -jar myClass.jar

执行该命令时,会用到目录META-INF\MANIFEST.MF文件,在该文件中,有一个叫Main-Class的参数,它说明了java -jar命令执行的类。

用maven导出的包中,如果没有在pom文件中将依赖包打进去,是没有依赖包。 1.打包时指定了主类,可以直接用java -jar xxx.jar。 2.打包是没有指定主类,可以用java -cp xxx.jar 主类名称(绝对路径)。 3.要引用其他的jar包,可以用java -classpath $CLASSPATH:xxxx.jar 主类名称(绝对路径)。其中 -classpath 指定需要引入的类。

下面基于pom和META-INF\MANIFEST.MF两个文件的配置,进行了三种情况的测试: pom.xml的build配置:




org.apache.maven.plugins
maven-compiler-plugin
3.1

1.8
1.8



maven-assembly-plugin



test.core.Core



jar-with-dependencies





make-assemble
package

single





META-INF\MANIFEST.MF的内容:

Manifest-Version: 1.0
Main-Class: test.core.Core

1.pom中build指定mainClass 但是 META-INF\MANIFEST.MF文件中没有指定Main-Class: test.core.Core

java -jar test-jar-with-dependencies.jar //执行成功
java -cp test-jar-with-dependencies.jar test.core.Core //执行失败,提示jar中没有主清单属性

2.pom中build没有指定mainClass 但是 META-INF\MANIFEST.MF文件中指定了Main-Class: test.core.Core

java -jar test-jar-with-dependencies.jar //执行失败,提示jar中没有主清单属性
java -cp test-jar-with-dependencies.jar test.core.Core //执行成功

3.pom中build指定mainClass && META-INF\MANIFEST.MF文件中增加了Main-Class: test.core.Core

java -cp test-jar-with-dependencies.jar test.core.Core //执行成功
java -jar test-jar-with-dependencies.jar //执行成功
关注
打赏
1665632672
查看更多评论
立即登录/注册

微信扫码登录

0.0380s