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配置:

<build>
<!--<finalName>test-1.0-SNAPSHOT</finalName>-->
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>test.core.Core</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<!--下面是为了使用 mvn package命令,如果不加则使用mvn assembly-->
<executions>
<execution>
<id>make-assemble</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

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 //执行成功

介绍java -cp java -jar的区别相关推荐

  1. java -cp 和 java -jar 的区别

    目录 java -cp java -jar maven 打包 java -cp java -cp 和 -classpath 一样,是指定类运行所依赖其他类的路径,通常是类库.jar 包之类,需要全路径 ...

  2. java -cp 与 java -Djava.ext.dirs的区别与坑

    大家在linux环境下使用命令行执行java程序时,经常要使用到大量外部的jar包或class文件,一般我们有哪些方式可以用呢? -classpath,命令格式:# java -classpath & ...

  3. java -jar 和 java -cp用法

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

  4. java注解的jar包_Java 注解 Annotation

    目录: 从 JDK5 开始,Java 增加了对元数据(MetaData)的支持,也就是 Annotation.Annotation 其实就是代码里面的特殊标记,这些标记可以在编译.类加载.运行时被读取 ...

  5. java classpath 和 jar 简介

    目录 classpath jar包 小结 classpath 在Java中,我们经常听到classpath这个东西.网上有很多关于"如何设置classpath"的文章,但大部分设置 ...

  6. java -cp命令使用

    java -cp命令使用 Mac(Linux)下格式 java -cp .:你的jar包路径 主类的全限定名称 举例 java -cp .:myClass.jar packname.mainclass ...

  7. WIN10 下 “java -cp“ 命令解析

    背景 最近在在项目中遇到了一个类加载的问题,几经周折没有找到合适的解决方式,只能怪自己学艺不精.没办法只好重拾曾今丢掉的 java 知识,尝试从源头开始分析问题. 环境 Win 10 企业版 java ...

  8. java打包成jar|执行jar包中的main方法

    java打包成jar jar -cvf [jar包的名字] [需要打包的文件] 执行jar包中的main方法 java -jar ****.jar 执行后总是运行指定的主方法,如果 jar 中有多个 ...

  9. java -cp详解(ChatGPT生成)

    java -cp命令用于指定Java程序运行时所需的classpath路径,它的基本语法如下: java -cp path/to/class/files MainClass 其中,path/to/cl ...

最新文章

  1. 设计模式笔记(1)---开篇(文章索引)
  2. Spring使用支付宝扫码支付
  3. [你必须知道的.NET]第二十七回:interface到底继承于object吗?
  4. 一秒点击屏幕次数_手机屏幕刷新率那点事儿!
  5. [windows phone 7 ]查看已安装程序GUID
  6. MySQL执行外部sql脚本文件的命令( source命令执行sql )
  7. 湖人签阿泰是双赢之举 防罗伊打压火箭是两大关键
  8. App Transport Security has blocked a cleartext
  9. 极简静态 Web 服务器
  10. Python 网页爬虫
  11. 大学的c语言编译器,有多少大学还在用Turbo C做编译器
  12. Linux下安装MySQL、安装注意事项以及安装问题解决等(以腾讯云服务为主)
  13. php zend debugger_PHPStorm 与 Zend Debugger
  14. Apple 开发者论坛新功能体验
  15. 磁盘一把锁一个感叹号_Win10系统中如何解决磁盘图标上出现感叹号的情况
  16. UEFI HOB 学习
  17. 目标检测入门实战:贪吃蛇小游戏
  18. 【福利帖】7日玩转ESP32
  19. Python爬虫入门第一课:如何解析网页
  20. Altium Designer基础知识

热门文章

  1. 带你少走弯路:五篇文章学完吴恩达机器学习
  2. 论文发得好,在这所985高校超市买东西能打折…
  3. 28本实体书包邮免费送!年前替我领回家!
  4. Linux之复制、移动文件及目录命令
  5. ida pro学习笔记2022.3.19
  6. Linux控制删除深度!除find ./ -maxdepth 1 -name *.c | xargs rm -rf
  7. 博士如何高效率阅读文献?有哪些技巧可以借鉴?
  8. 使用Python+OpenCV+dlib为人脸生成口罩
  9. 链表问题14——在单链表种删除指定值的节点
  10. 关于socket的一些探究