Java 学习之 jar

《Head First Java》第十七章——包、jar存档文件和部署,阅读笔记。

JAR 就是 Java ARchive,这种文件是个 pkzip 格式的文件。
可执行的 JAR 代表用户不需要把文件抽出来就能运行,程序可以在类文件保存在 JAR 的情况下执行,秘诀在于创建出 manifest 文件,它会带有 JAR 的信息,告诉 Java 虚拟机哪个类含有 main() 这个方法!

1
Main-Class: MyApp

不使用包的情况下

1
2
3
4
5
6
javac MyApp.java
javac -d ../classes MyApp.java
javac -d ../classes *.jar
jar -cvmf manifest.txt app1.jar *.class
jar -cvmf manifest.txt app1.jar MyApp.class
java -jar app1.jar

使用了包

Java 中包的一大作用就是为了防止多个库中类名的冲突问题,此时的 manifest.txt 的内容:

1
Main-Class: com.headfirstjava.PackageExercise

然后是编译、运行、打包:

1
2
3
4
javac -d ../classes com/headfirstjava/PackageExercise.java
javac -d ../classes com/headfirstjava/*.java
java com.headfirstjava.PackageExercise
jar -cvmf manifest.txt packEx.jar com

列出 JAR 包内容:

1
jar -tf packEx.jar

tf 即 table file,列出文件列表
解压 JAR 包:

1
jar -xf packEx.jar

xf 即 extract file,解压后的文件夹里 manifest.txt 文件在 META-INF 文件夹下,而 META-INF 就是 META Information

JWS

JWS,即 Java Web Start,也是一种通过 Web 发布 Java 可运行程序的方式,与 applet 不同,这玩意下载后就可以脱离浏览器独立运行了,第一次听说,貌似也没人用,当故事看下就算了。