1.jar命令详解
jar 是随JDK自动安装的,在JDK安装目录下的bin目录中,在我的计算中它的位置如下:
上面红色矩形框里就是所示的jar,在window应用程序中,它的文件名为jar.exe.
如果在命令窗口中运行不带任何参数的jar命令,系统会提示jar命令的用法:
在命令行里输入jar,就会出现上的输出结果. 注意:如果输入jar无效的话,可能就是你的环境变量没有配置好.
下面通过一些例子来说明jar命令的用法:
1.1创建可JAR文件
jar cf test.jar test
该命没有显示压縮过程,执行结果是将test路径下的全部内容生成一个test.jar文件。如若当前目录下已经存在test.jar,在覆盖该文件!
1.2创建JAR文件,并显示压縮过程.
jar cvf test.jar test
该命令与上命令中的结果相同,当由于v参数的作用,显示里打包过程.
1.3不使用清单文件
jar cvfM test.jar test
该命令与第二个命令的结果相似,其中M选项表示不生成清单文件。因此生成的test.jar文件中没有包含META-INF/MANIFEST文件,打包过程的信息业略有差别.
1.4 查看JAR包内容
jar tf test.jar
在test.jar 文件已经存在的条件下,上面命令可以查看test.jar文件的内容!
有时候当jar包中内容非常多时,直接在命令行里无法全部=显示,这时我们可以利用重定向将结果保存到文件中,可以采用这样的命令
jar tf test.jar >> test.txt
该命令会在当前路径下生成一个test.txt文件,然后信息都保存在这个test.txt文件中。
1.5查看JAR包详细内容
jar tvf test.jar
该命令与第四条命令很相似,但它更详细,除了显示第四条显示的内容外,它还显示了包内文件的详细信息。
1.6 解压缩
jar xf test.jar
将test.jar 文件解压到当前目录下,不显示任何信息.
1.7带提示信息的解压缩
jar xvf test.jar
系统会显示解压缩的详细提示信息:
1.8 更新JAR文件
jar uf test.jar Hello.class
更新test.jar 中的Hello.class,如果test.jar 中已有Hello.class,则使用新的Hello.class文件替换原来的Hello.class文件。如果test.jar中没有Hello.class,则把新的Hello.class文件加入到test.jar中。
1.9更新时显示详细信息
jar uvf test.jar Hello.class
这条命令与第8条命令相同,只不过它会信息而已
2.创建可执行的JAR包
这次我们就哪一个普通的java类来作为例子演示一下.HelloWorld.java的代码如下:
package test;
public class HelloWorld {
/**
* @param args
*/
public static void main(String[] args) {
System.out.println("你进入HelloWorld的主方法");
}
}
该类在我的计算机目录结构如下:
所以在源代码中的开头会有 “ package test ; ” 这段代码,如果在D盘跟目录下,就不需要这段代码.可能是啰嗦了一点,但这是很多人容易犯的 错误,却总找不出原因。
接下来我们就来编译和执行HelloWorld .java ,为了让大家不忘记命令行编译和执行java的代码的方法,我就在命令行里操作了:
编译HelloWorld.java
执行HelloWorld.class文件
接下来就进入主要的内容了:
创建可执行的JAR包的关键在于,让javaw命令知道JAR的哪个类是主类,javaw 命令可以通过运行该主类来运行程序,这就需要借助于清单文件,要在清单文件中增加如下一行:
Main-Class: test.HelloWorld
在a.txt文件中编写这个清单文件,其中的格式为:Main-Class:<空格>test.HelloWorld<回车>
这个清单文件,前面是key ,后面是value,格式是非常的严格:
现在HelloWorld.class 和a.txt文件都有了之后,就可以创建可执行的JAR包了.运行如下命令之后,我们就可以在当前目录下得到test.jar,这是一个可以执行的JAR。
最后我们运行 java -jar test.jar ,会看到如下的结果:
这样创建一个可执行的JAR包过程就结束了.