java -jar 和 java -cp

java jar命令 常见用法:
一、jar命令作用:
进行打包 – 把多个文件打包成一个压缩包 – 这个压缩包和Winzip的压缩格式是一样的。
区别在于jar压缩的文件默认多一个META-INF的文件夹,该文件夹下包含一个Manifest.mf(清单文件)的文件

通常来说jar命令得到的压缩包有三种(压缩格式完全一样,只是后缀名不同而已):
A、*.jar - 它里面包含N个class文件。

B、*.war(web)- 它是一个web应用打包生成的。

C、 *.ear(Enterprise)- 它是一个企业应用打包生成的包

二、jar命令用法:
-c :创建新的归档文件
-t :列出归档目录和文件
-x :解压缩已归档的指定(或所有)文件
-u :更新现有的归档文件
-v :在标准输出中生成详细输出 / 提供更详细输出信息
-f :指定归档文件名 / 为压缩包指定名字
-m :包含指定清单文件中的清单信息
-e :为捆绑到可执行 jar 文件的独立应用程序

指定应用程序入口点

-0 仅存储,不压缩,只是打包;不使用任何 ZIP 压缩

-M 不创建条目的清单文件 META-INF/MANIFEST.MF

-i 为指定的 jar 文件生成索引信息

-C 更改为指定的目录并包含其中的文件

1、创建压缩包

jar -cf mytest.jar *.class

//将当前目录下的*.class文件压缩到上一级目录的mytest.jar文件内

jar -cvf mytest.jar *.class

2、解压

// 解压到当前目录

jar -xf mytest.jar

// 解压可看到详细的过程

jar -xvf mytest.jar 

3、更新压缩包
要加入的指定class文件

jar -uvf mytest.jar 

4、查看jar包中包含的文件

jar  -tvf mytest.jar

4、为什么要制作jar包?

一个真实项目中,涉及到的class文件是非常多的。非常多的class文件存在以下问题:

a.系统管理不方便;

b.JVM要分开依次加载不同的*.class文件,效率很低,于是就可以把多个class文件打包成一个jar包,这样好处是:

①.多个class文件都统一成一个jar包方便管理;

②.JVM可以直接加载jar包就可以一次性加载N个类,效率更高

三、java -jar 命令

java -jar myClass.jar

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

java -jar  *.jar param1 param2

运行jar包,会自动到 jar 包中查询mainfest中定义的启动类并运行
param1,param2 为main方法的参数可不填

四、java -cp 命令
java -cp 和 -classpath 一样,是指定类运行所依赖其他类的路径,通常是类库,jar包之类,需要全路径到jar包,

注意:
window上分号“;”
linux上分号“:”

例如:

java -cp lib/*;etc/ com.Start param1 param2

将lib下的所有jar文件以及etc下的所有配置文件添加到 classpath 中
并在classpath 中寻找 com.Start类(main方法类)并运行
param1,param2 为main方法的参数可不填
注意:jar 文件引入classpath,通配符不能写成 .jar, 只能使用 * 或 123
注意:配置文件引入classpath,只能写到目录 /, 不能添加 **

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: java -cpjava -jar 是不同的命令。 java -cp 是指定Java程序运行时的类路径,即指定Java程序所需要的类库在哪里。 java -jar 则是运行一个打包好的Java应用程序,该应用程序通常包含了所有依赖的类库,通过该命令可以直接运行应用程序。 ### 回答2: java -cp命令用来指定JVM启动时的class路径,也就是指定JVM去哪里找到类文件。同时,可以使用-cp指定多个路径,多个路径之间需要用分号或冒号隔开。这个命令使用时要写出完整的类路径,包括类名和包名。 而java -jar命令则常用于运行通过JAR打包的Java应用程序,比如我们打出一个xxx.jar的程序,就可以用java -jar xxx.jar运行。这个命令不需要指定class路径,因为jar文件已经包含了所有的类文件和依赖文件,程序可以直接通过jar文件启动运行。 因此,java -cpjava -jar命令的区别主要在于: 1.指定class路径的方式不同,-cp需要完整的类路径,-jar只需要指定jar包文件名。 2.使用-cp启动程序时,需要保证所有所依赖的类文件都在指定的classpath中,而使用-jar启动程序则无需考虑这个问题,因为所有依赖的文件已经打包进了jar文件中。 综上,java -cpjava -jar命令的使用场景不同。使用-cp适合于调试和开发过程中,需要多次编译和运行不同的类文件,而使用-jar适合于打包发布,一次性运行的场景,比如网络发布和部署。 ### 回答3: java -cpjava -jar都是Java的命令行选项,用于指定Java应用程序的类路径。 Java应用程序通常需要使用多个类和库,这些类和库需要指定在类路径中才能被Java虚拟机(JVM)加载。Java应用程序可以通过以下两种方式指定类路径: 1. 使用java -cp选项指定类路径 使用java -cp选项可以指定Java应用程序的类路径,例如: java -cp /path/to/classes:/path/to/lib/* com.example.Main 其中 /path/to/classes 是编译生成的.class文件所在的目录,/path/to/lib/* 是引用的所有库文件所在的目录,com.example.Main是程序的启动类。这种方式适用于在命令行中指定类路径。 2. 使用java -jar选项指定类路径 使用java -jar选项可以指定Java应用程序的类路径和启动类,例如: java -jar /path/to/app.jar 其中 /path/to/app.jar 是包含所有类和库的可执行jar包。这种方式适用于将所有类和库打包成一个可执行的jar包时使用。 总之,java -cp是在命令行指定类路径,java -jar是在可执行的jar包中指定类路径和启动类,这是两种不同的指定类路径的方式。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值