博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jar命令打jar包
阅读量:5080 次
发布时间:2019-06-12

本文共 3549 字,大约阅读时间需要 11 分钟。

目录:

1. 准备工作

2. jar命令打jar包

  1) jar命令用法

  2)第一种方式 jar -cvf ./class2json.jar ./com  (这种方法不行)

  3)第二种方式  jar cvfm jar包名称 主类清单文件 要打包的class文件

  4) 用压缩软件进行压缩

3)以及4)方法生成的jar包,需要和class2json3_lib放在同一文件下才能运行

 

1. 准备工作:

为了省事,这里以eclipse中项目Class2Json为例,该项目结构如下:

bin:是根据执行.java生成的.class文件,bin下的目录与src目录一样,只不过是.class文件lib:外部依赖包src:我们自己写的.java文件

 

接下来:

1. 我们新建一个Class2Json_jar的文件夹2. 把bin下的文件复制到Class2Json_jar3. 并把lib整个复制过去,把lib改名为class2json3_lib4. 创建META-INF文件夹,并在该文件夹下创建MANIFEST.MF文件

在MANIFEST.MF文件中添加如下内容:(书写注意规范,中间都要用一个空格隔开,即使下一行,开头也要一个空格)

(第一个是版本号; 第二个是额外的jar包,第三个是启动的主类)

Manifest-Version: 1.0Class-Path: . class2json3_lib/commons-beanutils-1.8.0.jar class2json3_ lib/commons-collections-3.2.1.jar class2json3_lib/commons-lang-2.4.ja r class2json3_lib/commons-logging-1.1.3.jar class2json3_lib/ezmorph-1 .0.6.jar class2json3_lib/json-lib-2.3-jdk15.jarMain-Class: com.zc.class2json.trans.test.TestDataClass2Json

 我的Class2Json_jar文件夹包含如下内容:

 

2. jar命令打jar包

1) jar命令用法

zhangchao@zc:~/zc/jar-package-example/Class2Json_jar$ jarUsage: jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] files ...Options:    -c  create new archive    -t  list table of contents for archive    -x  extract named (or all) files from archive    -u  update existing archive    -v  generate verbose output on standard output    -f  specify archive file name    -m  include manifest information from specified manifest file    -n  perform Pack200 normalization after creating a new archive    -e  specify application entry point for stand-alone application         bundled into an executable jar file    -0  store only; use no ZIP compression    -P  preserve leading '/' (absolute path) and ".." (parent directory) components from file names    -M  do not create a manifest file for the entries    -i  generate index information for the specified jar files    -C  change to the specified directory and include the following fileIf any file is a directory then it is processed recursively.The manifest file name, the archive file name and the entry point name arespecified in the same order as the 'm', 'f' and 'e' flags.Example 1: to archive two class files into an archive called classes.jar:        jar cvf classes.jar Foo.class Bar.class Example 2: use an existing manifest file 'mymanifest' and archive all the           files in the foo/ directory into 'classes.jar':        jar cvfm classes.jar mymanifest -C foo/ .

 

2)第一种方式 jar -cvf ./class2json.jar ./com  (这种方法不行)

jar -cvf ./class2json.jar ./com class2json.jar是jar包名称./com  是将这个文件打入jar包

jar包内容如下所示:

其中META-INF/MANIFEST.MF是自动生成的,如下所示:并没有额外的jar包以及主类

Manifest-Version: 1.0Created-By: 1.8.0_181 (Oracle Corporation)

命令行如下所示:因为我们没指定运行的主类,所以 java -jar class2json.jar 运行失败,因为找不到主类

 

3)第二种方式  jar cvfm jar包名称 主类清单文件 要打包的class文件

jar cvfm class2json_1.jar ./META-INF/MANIFEST.MF com

运行jar文件:

java -jar class2json_1.jar 参数1 参数2 参数3 参数4 参数5 参数6

 这时把我们的主类清单添加到jar包里了

jar包内容如下所示:

其中META-INF/MANIFEST.MF是我们引入的,包括额外的jar包以及主类

Manifest-Version: 1.0

Class-Path: . class2json3_lib/commons-beanutils-1.8.0.jar class2json3_
lib/commons-collections-3.2.1.jar class2json3_lib/commons-lang-2.4.ja
r class2json3_lib/commons-logging-1.1.3.jar class2json3_lib/ezmorph-1
.0.6.jar class2json3_lib/json-lib-2.3-jdk15.jar
Created-By: 1.8.0_181 (Oracle Corporation)
Main-Class: com.zc.class2json.trans.test.TestDataClass2Json

命令行如下所示:指定运行的主类,所以 java -jar class2json.jar 运行成功

 

4) 用压缩软件进行压缩

i)Ubuntu上,选中com以及META-INF文件夹,右键Compress:

因为META-INF/MANIFEST.MF指明了jar包以及主类:

ii)windows中,选中com以及META-INF文件夹,右键压缩,把后缀名改为jar

 

转载于:https://www.cnblogs.com/zhangchao0515/p/9534806.html

你可能感兴趣的文章
《梦断代码》读书笔记(三)
查看>>
AngularJS学习篇(一)
查看>>
关于Xshell无法连接centos6.4的问题
查看>>
spring security 11种过滤器介绍
查看>>
代码实现导航栏分割线
查看>>
大数据学习系列(8)-- WordCount+Block+Split+Shuffle+Map+Reduce技术详解
查看>>
luogu4849 寻找宝藏 (cdq分治+dp)
查看>>
关于源程序到可运行程序的过程
查看>>
C# Async与Await的使用
查看>>
Mysql性能调优
查看>>
iOS基础-UIKit框架-多控制器管理-实例:qq界面框架
查看>>
poj1611 简单并查集
查看>>
Ubuntu 14.04下安装CUDA8.0
查看>>
跨平台开发 -- C# 使用 C/C++ 生成的动态链接库
查看>>
PIGOSS
查看>>
软件目录结构规范
查看>>
解决 No Entity Framework provider found for the ADO.NET provider
查看>>
设置虚拟机虚拟机中fedora上网配置-bridge连接方式(图解)
查看>>
ES6内置方法find 和 filter的区别在哪
查看>>
Android实现 ScrollView + ListView无滚动条滚动
查看>>