jar命令格式:
jar [c t x u f ][ v m e 0 M i ][-C 目录]文件名…
- {ctxu}这四个参数必须选选其一
- [v f m e 0 M i]是可选参数,文件名也是必须的
命令参数说明:
-c 创建一个jar包
-t 显示jar中的内容列表
-x 解压jar包
-u 添加文件到jar包中
-f 指定jar包的文件名
-v 生成详细的报造,并输出至标准设备
-m 指定manifest.mf文件.(manifest.mf文件中可以对jar包及其中的内容作一些一设置)
-0 产生jar包时不对其中的内容进行压缩处理
-M 不产生所有文件的清单文件(Manifest.mf)。这个参数与忽略掉-m参数的设置
-i 为指定的jar文件创建索引文件
-C 表示转到相应的目录下执行jar命令,相当于cd到那个目录,然后不带-C执行jar命令
jar 打包指定MANIFEST.MF
MANIFEST.MF文件编写规则
(1) 不能有空行和空格的地方,第一行不可以是空行( 第一行的行前不可以有空行),行与行之间不能有空行,第行的行尾不可以有空格
(2) 一定要有空行的地方,最后一行得是空行(在输完你的内容后加一个回车就OK)
(3) 一定有空格的地方 key:value在分号后面一定要写写一个空格
创建可执行jar包
1.编辑manifest.mf文件
Main-Class: 主类名称(注意空格以及回车,不带class)
2.打包
java cvfm jar名称 manifest.mf 范围
3.可执行jar包
(1)存在依赖的jar
- 方法1:使用Bootstrap Classloader来加载这些类
参数:
-Xbootclasspath:完全取代系统Java classpath.最好不用
-Xbootclasspath/a: 在系统class加载后加载。一般用这个
-Xbootclasspath/p: 在系统class加载前加载,注意使用,和系统类冲突就不好了
java 参数jar包... -jar 可执行jar包名 传入参数
注:针对于win下,传入多个jar包时可以采用;,而针对于unix系统,可采用:.
- 方法二:用AppClassloader来加载
在MANIFEST.MF中添加Class-Path: jar位置
- 方法三:使用Extension Classloader来加载
把需要加载的jar都放到%JRE_HOME%/lib/ext下面,这个目录下面的jar,会在Bootstrap Classloader工作完后由Extension Classloader来加载
- 自定义classloader
(2)不存在依赖的jar
java -jar jar名称 [参数名称,...]
jvm加载流程:
Bootstrap ClassLoader:负责加载java基础类
Extension ClassLoader:负责加载java扩展类
App ClassLoader:负责加载当前java应用的classpath中的所有类
war文件
打包war:jar -cvf blog.war *
查看war:jar -tf blog.war