程序打包,安全可靠
文章来源:《Head First Java》修炼感悟。
在前篇文章中,我们通过 -d
命令可以很轻松地管理程序文件。 今天我们再来试试另一种玩法,把你所有的程序文件打包成一个 .jar
文件,方便你随身携带、拷贝,或者提交给客户。
创建 JAR 文件
JAR(Java Archive,归档文件),也就是我们常说的压缩文件,可以把你需要的类,甚至是整个项目的类文件,统统压缩成单独的一个 .jar
文件,并且无需解压即可通过命令行执行。
下面具体说说如何创建 JAR 文件,首先需要在 classes 目录下下创建 manifest.txt
文件,用来指定 main()
方法包含在哪个类中。 就像这样:
Main-Class: xxx
其中,xxx
表示包含 main()
方法的类,注意没有 .class
扩展名,并且类名后需要加上一个换行。
然后使用 JDK 提供的 jar 工具进行打包,你需要先 cd
到 classes 目录:
$ cd JavaSpace/classes
$ jar -cvmf manifest.txt demo.jar *.class
jar 命令的一些含义:
-cvmf manifest.txt
指定配置文件;demo.jar
指定生成的 JAR 文件;*.class
表示对当前目录下的所有类文件打包。
经过以上操作,你会发现 classes 目录中多了一个 demo.jar 文件,使用解压软件可以查看文件内容,其中包含了 MANIFEST.MF 文件以及 classes 目录中的所有类文件。
创建带包结构的 JAR 文件
带有包结构的类文件,打包方式略微有点不同,你需要指定完整的包名。 以 com.dsic.GameHelper.class
为例,你需要在 manifest.txt
中这样指定类名:
Main-Class: com.dsic.GameHelper
然后 cd
到 classes 目录下进行打包:
$ cd JavaSpace/classes
$ jar -cvmf manifest.txt com
注意,这次仅仅指定了第一层包名 com
,完整的包名由 jar 自行推断。
执行 JAR 文件
打包完成后,接下来就可以尝试运行 JAR 文件。 因为 manifest.txt
文件中指定了 main()
方法的位置,所以 Java 虚拟机能够顺利地载入类,然后开始执行程序。
首先 cd 到 classes 目录,然后使用 java 命令执行:
$ cd JavaSpace/classes
$ java -jar demo.jar
其中,-jar
表示告诉 Java 虚拟机将要执行的是 JAR 文件,demo.jar
就是实际要执行的 JAR 文件。
查看 JAR 文件
通过 jar 命令不但可以打包,而且还可以查看 JAR 文件。 假设还是上面的那个 demo.jar,我们尝试看看文件内容。 首先 cd
到文件目录:
$ cd JavaSpace/classes
$ jar -tf demo.jar
其中,-tf
就是 table file 的意思,表示列出文件。 执行后类似这样:
可以看到 JAR 文件中除了包含类文件还有一个 MANIFEST.MF 配置文件,里面保存的就是主类信息以及版本等信息。
解压 JAR 文件
再来看看如何解压 JAR 文件,还是先 cd
到文件目录:
$ cd JavaSpace/classes
$ jar -xf demo.jar
命令行中的 -xf
extract file 的意思,表示解压文件。 命令执行后就会在当前目录下找到 demo.jar
中包含的所有文件。
《 上一篇 神奇的 -d 命令 |
---|