java解压jar包的方法_Java 打包成jar包 和 解压jar包-程序员宅基地

技术标签: java解压jar包的方法  

解压jar包

jar xf xxx.jar

打包成jar包

方法一:通过jar命令

jar命令的用法:

下面是jar命令的帮助说明:

用法:jar {ctxui}[vfm0Me] [jar-file] [manifest-file] [entry-point] [-C dir] files ...

选项包括:

-c  创建新的归档文件

-t  列出归档目录

-x  解压缩已归档的指定(或所有)文件

-u  更新现有的归档文件

-v  在标准输出中生成详细输出

-f  指定归档文件名

-m  包含指定清单文件中的清单信息

-e  为捆绑到可执行 jar 文件的独立应用程序

指定应用程序入口点

-0  仅存储;不使用任何 ZIP 压缩

-M  不创建条目的清单文件

-i  为指定的 jar 文件生成索引信息

-C  更改为指定的目录并包含其中的文件

如果有任何目录文件,则对其进行递归处理。

清单文件名、归档文件名和入口点名的指定顺序

与 "m"、"f" 和 "e" 标志的指定顺序相同。

示例 1:将两个类文件归档到一个名为 classes.jar 的归档文件中:

jar cvf classes.jar Foo.class Bar.class

示例 2:使用现有的清单文件 "mymanifest" 并

将 foo/ 目录中的所有文件归档到 "classes.jar" 中:

jar cvfm classes.jar mymanifest -C foo/ .

下文假设编译后的class文件在bin目录下

一、打包成一般的jar包

输入如下命令即可:

jar cvf counter.jar -C bin .

其中,“-C bin”实际上是告诉jar命令先cd到bin目录下,再在此目录执行没有参数“-C bin”的命令,等价于:

cd bin

jar cvf counter.jar . // "."代表当前路径

二、打包成可运行的jar包

要打包成可运行的jar包,有两种方法,一是手动创建MANIFEST.MF文件,并在其中指定主类;二是使用jar的-e参数指定可运行jar包的入口点(即main类的完全名称).

以Java源代码行数统计程序的打包为例,演示如何打包:

1. 手动创建MANIFEST.MF文件:

1)首先编辑MANIFEST.MF文件,内容如下:

Manifest-Version: 1.0

Created-By: rsljdkt

Class-Path: .

Main-Class: Main

说明:

第一行指定清单的版本,若无,则JDK默认生成:Manifest-Version: 1.0

第二行指明创建的作者,若无,则JDK默认生成Created-By: 1.6.0_22(Sun Microsystems Inc.)

第三行指定主类所在类路径,

第四行指明程序运行的主类

2)使用jar命令进行打包:

jar cvfm counter.jar MANIFEST.MF -C bin .

说明:

参数f:指定打包后的包名。

参数m:指定自定义的MANIFEST.MF清单文件,否则,JDK会自动生成不包含Main-Class的默认清单。

参数c:指定是创建新的归档文件。

参数v:在标准输出中生成详细输出,该选项是可选的。

2. 使用-e参数指定入口点:

执行如下命令即可:

jar cvfe counter.jar Main -C bin .

方法二:使用Eclipse的Export功能:

一、打包成一般的jar包:

步骤如下:

1)在要打包的项目上右击,选择Export

2)在弹出的窗口中,选择Java -> JAR File,然后点击next按钮

3)在JAR File Specification窗口中,设置打包成的文件名和存放位置,点击两侧next

4)在JAR Manifest Specification窗口中,设置MANIFEST.MF清单文件的配置,

若仅仅打包成单纯的jar包的话,不用做任何修改,采取默认即可

若打包成可执行jar包的话,可以使用已存在的MANIFEST文件或者直接选择Main class

5)点击Finish按钮,完成打包。

二、打包成可运行的jar包

步骤如下:

1)在要打包的项目上右击,选择Export

2)在弹出的窗口中,选择Java -> Runnable JAR File,然后点击next按钮

3)在Runnable JAR File Specification窗口中,选择Launch configuration和Export destination

4)点击Finish按钮,打包完成。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_33565558/article/details/114509823

智能推荐

VGG16(pytorch自带的) + CIFAR10_vgg16bn_cifar10.pth-程序员宅基地

文章浏览阅读1.6k次。支持使用多块GPU进行训练import osimport torchimport torch.nn as nnfrom torch import optimfrom torch.utils.data import DataLoaderfrom torchvision import transforms, datasets, modelsfrom torchsummary import summaryclass VGGNet(nn.Module): def __init__(sel_vgg16bn_cifar10.pth

ORACLE 11G学习笔记15—检索性能优化_oracle11g explain-程序员宅基地

文章浏览阅读182次。一、【常规SQL语句优化】 truncate 写出存储过程动态删除表的SQL并加注释…create or replace procedure trun_table(table_deleted in varchar2) as–创建一个存储过程,传入一个表示表名称的参数,实现清空指定的表cur_name integer;–定义内部变量,存储打开的游标begincur_name := dbms..._oracle11g explain

oc 属性列表_oclist-程序员宅基地

文章浏览阅读609次。NSData: 对缓冲区的封装 缓冲区由nadata释放属性列表属性列表的写入:每个集合类中都有一个放法-writeToFile:atomically: 该方法可以将集合中的内容 写入到.plis文件中 atomically参数是决定写入新内容时 是否先将新内容保存到临时文件 等完全写入了新内容 再交换 这样可以更加安全的写入(缺点 无法返回错误信息)_oclist

Golang爬虫基础:通过代理IP发送请求_golang net/http req.host = 指定ip访问请求-程序员宅基地

文章浏览阅读8.3k次,点赞2次,收藏6次。Golang爬虫基础:通过代理IP发送请求_golang net/http req.host = 指定ip访问请求

【iOS】iPad & iPhone Launch Image 启动页图片尺寸大小(包括iPhone XR / Xs / Max)_ipad launchimage-程序员宅基地

文章浏览阅读933次。原文:https://blog.csdn.net/autom_lishun/article/details/88786566iOS APP设置启动图片LaunchImages原文:https://blog.csdn.net/st646889325/article/details/78732091关于设置launchImage:工程配置信息中设置显示launchImage:1、删除L..._ipad launchimage

出现Could not load dynamic library ‘cudart64_110.dll‘; dlerror: cudart64_110.dll not found解决办法_could not load dynamic library 'cudart64_110.dll';-程序员宅基地

文章浏览阅读1.4w次,点赞23次,收藏40次。问题出在.. 用cmd直接install tensorflow运行项目的时候出现报错 Could not load dynamic library 'cudart64_110.dll'; dlerror: cudart64_110.dll not found 解决办法 在这个网站上直接下载即可,????指路 如果报错缺的不是110,或者是101? 直接搜索就可以找到想要找的 最后一步 ..._could not load dynamic library 'cudart64_110.dll'; dlerror: cudart64_110.dll

随便推点

JS监听浏览器的返回、后退、上一页按钮的事件方法_"window.addeventlistener(\"popstate\", function(){-程序员宅基地

文章浏览阅读790次。在实际的应用中,我们常常需要实现在移动app和浏览器中点击返回、后退、上一页等按钮实现自己的关闭页面、调整到指定页面或执行一些其它操作的需求,那在代码中怎样监听当点击微信、支付宝、百度糯米、百度钱包等app的返回按钮或者浏览器的上一页或后退按钮的事件呢。我相信很多朋友像我一样,在百度、搜狗里面搜索很久都没找到方法。下面就来告诉大家怎样监听的方法:首先我们要了解浏览器的history。大家知道在页面中我们可以使用javascript window history,后退到前面页面,但是由于..._"window.addeventlistener(\"popstate\", function(){ if($this.isoperateback) { th"

物理地址、虚拟地址、逻辑地址、线性地址、虚拟内存_什么是物理地址和虚拟地址-程序员宅基地

文章浏览阅读2.4k次。1.物理地址用于内存芯片级的单元寻址,与处理器和CPU连接的地址总线相对应。在实地址模式(因为实模式没有分段或分页机制,Cpu不进行自动地址转换)下,程序员操作的就是物理地址,所谓的物理地址就是物理内存上的32位地址,即物理地址可以直接定位到物理内存上的位置,无论任何操作,最终都必须要得到物理地址才能在物理内存上进行操作.2.虚拟地址操作系统都提供了虚拟内存(virtual mem_什么是物理地址和虚拟地址

局端之初接触_什么是局端什么是终端-程序员宅基地

文章浏览阅读690次。# 局端设备VS终端设备 终端设备(Terminal) 即最终到达用户端的设备,是计算机网络中处于网络最外围的设备,主要用于用户信息的输入以及处理结果的输出等。 在IBM环境中: 终端是端点用户用于和主机通信的设备。这种设备可以是监视器、键盘设备或打印设备。 它们用同轴电缆和一个群控器(cluster controller)相连,这个群控器可以直接连接到一台主机,也可以通过一个通信控制器连接到这台主机。 多达32个终端可以连接到一个单一的群控器上,具体数字要视这个群控器的型号而_什么是局端什么是终端

RAC 监听UITextFiled值变化, 动态改变Uibutton点击状态,_ios rac监听uitextview改变-程序员宅基地

文章浏览阅读2.2k次。兼容 输入框直接输入和直接赋值。(双向绑定)RACSignal *phoneInputSignal= [[RACObserve(self.phoneInputView, text) merge: [self.phoneInputView rac_textSignal]] map:^id _Nullable(id _Nullable value) { return @([va..._ios rac监听uitextview改变

Stm32 NRF24L01 程序卡在 while(NRF24L01_IRQ!=0)_卡在while(nrf24l01_irq!=0);-程序员宅基地

文章浏览阅读1.5k次。问题描述:如题目所示,他就一直卡在那里,出不来。对问题的思考:我所用的程序是我以前做的一个程序,这次又做了一套硬件,结果他卡在那里出不来,我观察了一下NRF24L01模块,发现它上面的晶振很旧。结论与解决办法:太熟悉这个行业了,一看这芯片就是翻新货,首先恭喜自己买到了翻新货,能够正常初始化,但就会遇到这种问题,这也不能怪卖家,供应商经常会在一堆好货里面混这么几块坏的,心眼太坏了。解决办法当然很简单,直接换一块好的就好了。..._卡在while(nrf24l01_irq!=0);

高通camera结构(摄像头基础介绍)_高通aop camera-程序员宅基地

文章浏览阅读1.1k次,点赞2次,收藏3次。摄像头基础介绍 一、摄像头结构和工作原理. 拍摄景物通过镜头,将生成的光学图像投射到传感器上,然后光学图像被转换成电信号,电信号再经过模数转换变为数字信号,数字信号经过DSP加工处理,再被送到电脑中进行处理,最终转换成手机屏幕上能够看到的图像。数字信号处理芯片DSP(DIGITAL SIGNAL PROCESSING)功能:主要是通过一系列复杂的数学算法运算,对数..._高通aop camera