jar

命令行打jar包 每一个java开发者运行第一个java项目时都知道项目通常被打成jar包,这些jar包是由IDE工具打的,知其然不知其所以然。 阅读详情

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使用范例:
 
(1)创建jar包

?
1
jar cf hello.jar hello

利用test目录生成hello.jar包,如hello.jar存在,则覆盖
 
(2)创建并显示打包过程

?
1
jar cvf hello.jar hello

利用hello目录创建hello.jar包,并显示创建过程
例:

?
1
E:\>jar cvf hello.jar hello

标明清单(manifest)
增加:hello/(读入= 0) (写出= 0)(存储了 0%)
增加:hello/TestServlet2.class(读入= 1497) (写出= 818)(压缩了 45%)
增加:hello/HelloServlet.class(读入= 1344) (写出= 736)(压缩了 45%)
增加:hello/TestServlet1.class(读入= 2037) (写出= 1118)(压缩了 45%)
 
(3)显示jar包:

jar tvf hello.jar   查看hello.jar包的内容
指定的jar包必须真实存在,否则会发生FileNoutFoundException。
 
(4)解压jar包:

?
1
jar xvf hello.jar

解压hello.jar至当前目录
 
(5)jar中添加文件:

?
1
jar uf hello.jar HelloWorld.java

将HelloWorld.java添加到hello.jar包中
 
(6)创建不压缩内容jar包:

?
1
jar cvf0 hello.jar *. class

利用当前目录中所有的.class文件生成一个不压缩jar包
 
(7)创建带manifest.mf文件的jar包:

?
1
jar cvfm hello.jar manifest.mf hello

创建的jar包多了一个META-INF目录,META-INF止录下多了一个manifest.mf文件,至于manifest.mf的作用,后面会提到.
 
(8)忽略manifest.mf文件:

?
1
jar cvfM hello.jar hello

生成的jar包中不包括META-INF目录及manifest.mf文件
 
(9)加-C应用:

?
1
jar cvfm hello.jar mymanifest.mf -C hello/

表示在切换到hello目录下然后再执行jar命令
 
(10)-i为jar文件生成索引列表:

当一个jar包中的内容很好的时候,你可以给它生成一个索引文件,这样看起来很省事。

?
1
jar i hello.jar

执行完这条命令后,它会在hello.jar包的META-INF文件夹下生成一个名为INDEX.LIST的索引文件,它会生成一个列表,最上边为jar包名。
 
(11)导出解压列表:

jar tvf hello.jar >hello.txt   如果你想查看解压一个jar的详细过程,而这个jar包又很大,屏幕信息会一闪而过,这时你可以把列表输出到一个文件中,慢慢欣赏!
 
 (12)jar -cvf hello.jar hello/*

   例如原目录结构如下:
   hello
     |---com
     |---org
 
你本想只把com目录和org目录打包,而这时jar命令会连同hello目洋也一块打包进。这点大家要注意。jar命令生成的压缩文件会包含它后边出的目录。我们应该进入到hello目录再执行jar命令。
 
注意:manifest.mf这个文件名,用户可以任指定,但jar命令只认识Manifest.mf,它会对用户指定的文件名进行相应在的转换,这不需用户担心。
 
三.Manifest.mf文件编写规则:
 
 manifest.mf的编写一定要注意一些细节,它是很苛刻的,我在此也载过不少跟头,谁让它这么小气呢,没办法,所以专门给大家列出来。
 
(1) 不能有空行和空格的地方
    第一行不可以是空行( 第一行的行前不可以有空行),行与行之间不能有空行,第行的行尾不可以有空格
(2) 一定要有空行的地方
最后一行得是空行(在输完你的内容后加一个回车就OK)

(3) 一定有空格的地方
     key: value       在分号后面一定要写写一个空格
  
四.怎样使用jar包中的类
 
还是写个小例子吧,这样直观!

?
1
2
3
4
5
6
7
public final class Person
{
    public static int age()
    {
    return 30 ;
    }
}
?
1
2
-> javac Person.java
->jar cvf person.jar Person. class

将上面的文件打成一个jar包
 
再写一个类对其进行调用:

?
1
2
3
4
5
6
7
public class MyAge
{
       public static void getAge()
    {
          System.out.println(Person.age());
       }
}
?
1
2
->javac MyAge.java
  ->java -classpath person.jar MyAge

 
感兴趣的读者可以调试一下这个程序

五.创建可执行jar包

 有时自己写个程序,类一大堆,时间一长连自己都不知道那个是主类,而且有可能用到图片或其它文件一大堆,看得也乱,这时你可以考虑把它做成一个可执行jar包...
 
(1) 编辑manifest.mf文件加入下面一行

?
1
Main-Class: MyApplet

注意:Main-Class的大小定,冒号后的空格,MyApplet后一定输入回车,然后保存。

(2) 打包

?
1
jar cvfm FirstApplet.jar manifest.mf MyApplet. class

注意:manifest.mf指定为存放Mani-Class: MyApplet文件的class路径(如:hello.Hello)或者文件名(applet)

(3) 可执行jar的使用

?
1
java -jar FirstApplet.jar

也可以<applet></applet>中使用:

?
1
2
<applet code=MyApplet archive=FirstApplet.jar width= 200 height= 100 >
</applet>

注意:类并没有给出,大家随便写一个就行,类名包名自己随意定,相应的更改就可以...
 
六.扩展自己的类
 
在JDK的安装目录\jre\lib\ext目录下,SUN为大家为我们扩展自己类的提供了方便,大家可以将自己的类文件打成.jar包放在此目录下,它由ExtClassLoader类装器负责进行装载,ExtClassLoader类装器是AppClassLoader类装载器的父装载器,AppClassLoader主要负责加载CLASSPATH路径下的文件,而在java中采用的又是委托父装载器的机制,所以此目录下存放的jar中的类文件不做任何的设置,类装载器就可以找到正常的加载,是不是很方便啊,呵...
 
如果你的.jar是给applet小应用程序看的,可以在打成jar包之前,在其manifest.mf加入下面两行。

?
1
2
3
Class-Path: FirstApplet.jar
Class-path: SecondApplet.jar
Main-Class: MyApplet

注意:Class-path可以设置多项,直接写jar包名既可。Main-Class主要当jar中有多个.class类文件时,java并不知道那个才是主类,所以要指定,如果jar包中只有一个类当然可以不指定。
 
Java调用类的顺序:java\lib\ext中的类--->Manifest.mf中指定的类-->当前目录中的类-->set CLASSPATH中指定的类。
  
七.调用URL网络上的jar包
 
(1) 生成jar包的URL
   

?
1
URL u= new URL( "jar:" + "FirstAppplet.jar" +!/");

 
(2) 建立jarURLConnection对象
   

?
1
JarURLConnection juc=(JarURLConnection)u.openConnection();

 
(3) 返回jar包中主类的名字

?
1
2
Attributes attr=juc.getMainAttributes();
String name=attr.getValue( "Mani-Class" );

 
一定要确保你的jar包中的manifest.mf中已正确的设置了Mani-Class属性,再强调一下一定要注意规则。
 
(4) 根据得到的主类名创建Class对象
   

?
1
Class c=Class.forName(name);

(5) 根据Class对象调用其main方法:

?
1
2
Method cm=c.getMethod( "main" , new Class[]{String. class });
   cm.invoke( null , new Object[]{});

 
提示:上边用到了Reflection反射机制的相关知识,大家如果多反射机制有兴趣,可查看java.lang.reflect包中的相关内容.
 
八.JAR命令使用技巧:
 
(1) jar创建压ZIP文件

?
1
jar cvfM TestZIP.jar test

      加M参数为了不生成META-INF相关内容
然后将TestZIP.jar改为TestZIP.zip就可以,是不是很简单....

(2) 使用WinRAR解压.jar文件

上边我们已经说过了,说JAR文件是一种特殊的压缩文件,所以它当然可以用我们常用的一些解压     缩工具来解了,至于怎么解,这就不用我说了吧。

(3) 用WinRAR生成.jar文件

我们已经说过JAR包与ZIP包主要区别就是JAR包中多一个META-INF的目录,META-INF目录下有一个manifest.mf文件,我们只要建立好相关的目录一压缩就可以了。
目录的结构如下:

      TestJar
          |--META-INF
                |--manifest.mf
          |--相关的类文件

JAVA:解压和打包 JAR 文件的技术指南 Java JAR文件操作指南 本文介绍了Java JAR文件的基本概念和操作方式。JAR文件是基于ZIP格式的Java归档文件,包含一个特殊的META-INF/MANIFEST.MF文件。文章详细讲解了JAR文件的反编译、解压和打包方法,包括: 反编译工具(luyten、jd-gui)使用及注意事项,特别指出多线程代码可能无法反编译 两种解压方法:使用Java标准库(提供完整代码示例)和命令行工具(jar -xvf命令) 打包JAR文件方法:提供Java标准库实现代码 操作指南包含具体命令和代码示例.. 阅读详情

相关推荐

JAR文件和jar命令的深入解析

JAR(Java Archive)文件是Java程序的归档文件格式,用于将多个文件(如类文件、图像和其他资源)合并成一个单独的文件,便于分发和部署。作为Java平台的一部分,JAR文件是一种压缩的ZIP格式,带有一个清单文件(MANIFEST.MF),定义了包内的元数据和文件结构。本章节详细介绍了如何使用jar命令来创建和维护JAR文件,从基础的命令结构到文件的组织和包含规则,再到JAR文件内部分层设计的原理,都进行了深入的探讨。掌握这些知识将使你能够有效地管理和维护Java应用程序的JAR包。

weixin_35414260的博客 1820

java -jar命令详解

jar启动命令详解

shenxiaomo1688的博客 4万+

JAR命令详解

JAR命令详解 当你编译好java程序后怎么手动打包呢,这里介绍了一些jar打包的命令

Java -jar参数详解:掌握Java可执行JAR文件的运行技巧

作为一种常用的开发语言,Java经常使用可执行的JAR(Java Archive)文件来打包和分发应用程序。使用java -jar命令运行JAR文件是一种方便快捷的方式。本文将详细介绍java -jar命令的各种参数,帮助您充分利用这个功能。

修己xj的博客 2万+

【SOC估计】基于EKF与二阶RC等效电路模型的锂电池SOC在线估计算法实现与仿真分析

本文详细介绍了基于扩展卡尔曼滤波(EKF)与二阶RC等效电路模型的锂电池SOC在线估计算法。通过Matlab仿真分析,展示了该算法如何实现高精度SOC估计,相比传统方法显著提升估计精度与鲁棒性,适用于电动汽车、储能系统等关键领域。

1095

活用QueryWrapper与@Select注解,构建MybatisPlus动态多表查询方案

本文深入探讨了如何结合MybatisPlus的QueryWrapper与@Select注解,构建高效灵活的动态多表关联查询方案。通过解析${ew.customSqlSegment}占位符机制,并设计通用的Service层封装,解决了复杂条件下多表查询的SQL拼接难题,显著提升了后台管理系统列表查询的开发效率与可维护性。

weixin_29291069的博客 271

jar包解压后还原可执行jar包

解压之后 修改文件,在不依靠开发工具的情况下重新打回jar包 命令如下 jar -cvf0M alert.jar BOOT-INF/ META-INF/ org/ 上代码 [admin@custmer-development-d-031162 apps_other]$ ll total 20736 -rw-rw-r--. 1 admin admin 21224413 Nov 18 10:36 alert-0.0.1-SNAPSHOT.jar drwxr-xr-x. 4 admin admin 6

学习 记录 总结 分享 8921

SNAP计算哨兵二号的叶面积指数(LAI)

对于哨兵二号数据以及LANDSAT8数据,SNAP提供已经集成好的模块计算LAI。在Optical->Thematic Land Processing->Biopyhsical Processor目录下面。 对于经过Sen2Cor处理好的数据,需经过重采样才可进行计算。重采样工具在Raster->Geometric->Resampling。 如果选择Biopyhsical Processor S2_10m进行计算,需要将所有的波段都重采样为10米(哨兵二号的第二波段为10米,可据此波

gxwwww的博客 9417

java jar

JAR 是 Java 开发中非常重要的工具,它不仅可以用于打包和分发 Java 应用程序,还可以通过文件实现可执行性、依赖管理和模块化等功能。通过 JDK 自带的jar工具,可以方便地创建、更新、查看和提取 JAR 文件。此外,jdeps和jmod等工具也为 JAR 文件的使用提供了更多的支持。

qq_62784677的博客 1697

静态时序分析(Static Timing Analysis, STA):简介及内容导航

静态时序分析(简称STA)是用来验证数字设计时序的技术之一,另外一种验证时序的方法是时序仿真,时序仿真可以同时验证功能和时序。“时序分析”这个术语就是用来指代“静态时序分析“或”时序仿真“这两种方法之一,简单来说,时序分析的目的就是为了解决设计中的各种时序问题。STA被称为静态的原因是其对于设计的分析是静态地执行的,并不依赖于施加在输入端口上的激励。相比之下,时序仿真则可以被视作动态地执行对设计的分析,具体过程描述如下:施加一组激励,观察在这组激励下电路行为是否符合要求,然后换一组激。

Starry__的博客 1987

如何对EMB电子机械制动器的热衰退问题进行优化

摘要 电子机械制动器(EMB)在新能源汽车和自动驾驶中具有重要应用价值,但其在高强度工况下会出现热衰退现象。本文分析了EMB热衰退的五大机理:摩擦副热效应、电机热衰退、减速机构热失效、温度对控制策略干扰以及结构设计导致的热积累。针对这些问题,提出了从材料、结构、控制三个维度的优化措施:升级耐高温材料、改进散热设计、优化控制算法等。通过"热生成抑制-热传导优化-热失效补偿"的系统方案,可有效改善EMB的热衰退问题,为智能汽车提供更可靠的制动保障。

m0_59012156的博客 342

【Java之JAR包解析】(三)除核心包 rt.jar之外的其他JAR包~

前面我讲解了JDK中最重要的核心JAR包 rt.jar,详细解释了其中包含的核心类库和API。【Java之JAR包解析】(一)如果你也跟我一样搞懂了rt.jar,那真的泰裤辣!· 上篇~【Java之JAR包解析】(二)如果你也跟我一样搞懂了rt.jar,那真的泰裤辣!· 下篇~需要知道,核心jar包通常包含了Java平台的基础类库,如java.lang、java.util、java.io等等。这些类库提供了Java程序运行所需要的核心功能。

Technology changes the world of life 3272

【NVIDIA-B200 GPU固件升级】NVIDIA Blackwell B200 GPU 固件更新全指南

B200 GPU 固件更新并非 “执行一条命令即可” 的简单操作,而是涉及 “版本兼容性校验、BMC 环境准备、UEFI 引导、Redfish 协议交互” 的系统性工程。从文档翻译与技术解析来看,NVIDIA 的更新流程设计围绕 “安全” 与 “稳定” 两大核心 —— 无论是 0.9 版本的 “跳板限制”,还是 UEFI Shell 的引导要求,本质都是为了避免因操作不当导致硬件损坏。对于数据中心运维人员,建议在更新前做好三项准备:① 确认 GPU 当前固件版本(通过查询),规划升级路径;

jundao1997的专栏 741

jar命令提取 JAR 文件

摘要: 本文解析jar -xvf解压命令失效的可能原因及解决方案。常见问题包括:1)JAR文件路径错误或不存在;2)文件损坏或内容为空;3)权限不足。建议操作流程:先用ls检查文件是否存在,再用jar -tf查看内容列表,最后通过jar -xvf file.jar -C dir/指定目录解压。示例演示了如何正确解压到指定目录并验证输出。关键命令对比:-xvf直接解压当前目录,-C dir/定向解压,-tf仅查看内容。

ahauedu的专栏 1039

Qt Creator牵手DeepSeek,开启AI开发新征程

Qt Creator 是一款功能强大的跨平台集成开发环境(IDE),专为 Qt 应用程序开发量身定制。它支持在编程过程中使用 GitHub Copilot 等编码助手,能帮助开发者为桌面、移动端和嵌入式平台创建软件。在代码编辑方面,Qt Creator 具备代码补全、语法突出显示、重构等功能,内置文档也随手可得,极大提高了代码编写的效率和准确性。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 7185

全网最强AI辅助课题申报教程!超详细流程拆解,助你快速提高课题申报成功率(附各部分高效提示词)

实验法要详细说明自变量、因变量、实验类型、实验过程、实验步骤、测量工具名称、被试取样方式、无关变量控制方法。这个部分就是让评审专家相信我们有能力把这个项目干成,写的时候要重点突出两块内容:第一是研究基础,包括你或团队在相关领域已有的研究成果,比如发表的论文、承担过的课题、获得过的奖励、相关研究经验等,要具体、有说服力;课题申报专门给我们留了一小节用来突出课题的创新之处,不管是研究角度、研究对象、研究方法,还是应用价值都可以提炼作为我们的创新点,最后的语气成果也要明确具体,且要和课题内容紧密相关。

智能AI让学术科研更容易 665

JAR文件

引言 Jar文件的全称是Java Archive File,意思是Java档案文件。通常Jar文件是一种压缩文件,与我们常见的ZIP压缩文件兼容,通常也被称为jar包。 当开发了一个应用程序后,这个应用程序包含了很多类,如果需要把这个应用程序提供给别人使用,通常会将这些类文件打包成一个JAR文件,把这个JAR文件提供给别人使用。只要别人在系统的CLASSPATH环境变量中添加这个JAR文件,则Ja...

py826826的博客 8972

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

运行 jar 文件_如何运行JAR文件

运行jar文件Today we will learn how to run JAR File in java. In last tutorial we learned how to create jar file. Here we will learn how to run jar file from command line and some other aspects of using jar...

从零开始的教程世界 1万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Jar Jar Links与Ant集成完全教程:构建无依赖的单一JAR文件

Jar Jar Links是一款强大的Java库重打包工具,能够帮助开发者轻松将第三方依赖嵌入到自己的项目中,构建出无外部依赖的单一JAR文件。本教程将详细介绍如何将Jar Jar Links与Ant构建工具集成,通过简单配置实现Java项目的依赖打包与重命名,让你的应用部署更便捷。 ## 📋 准备工作:环境与工具要求 在开始集成前,请确保你的开发环境满足以下条件: - JDK 8或更高版本

gitblog_01096的博客 950

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

java -jar 详解,Java中jar命令详解

做项目的时候我们肯定接触过很多jar包,那么jar包是什么呢?笔者了解到jar是java archive file 的简写。从名字就可以知道,它的应用与Java息息相关。下面就详细介绍如何自己生成jar包,这样我们管理我们自己的代码(尤其是一些比较重要而且不会或者很少有修改的代码)。安装好JDK之后,jar.exe就已经安装好了。在命令行中键入jar命令之后,就会出现下图。里面详细的介绍了jar命...

weixin_35747627的博客 2万+

在JAR中打包使用JAR库

不知大家在写Java程序的时候有没有这样的需求: 将引用其它第三方JAR库的项目打包成一个JAR文件运行.也就是说在你打包好的JAR文件中再包含那些你引用的第三方JAR文件,合成一个JAR包,这样只需在Windows下双击,或在Linux终端下输入 java -jar yourjarfile.jar即可方便运行.在最初一种普遍的做法是在打包的JAR文件中的META-INF/MANIFEST里使用Class-Path选项,像这样:

飘痕 2712

JAR 文件揭密

 大多数 Java 程序员都熟悉对 JAR 文件的基本操作。但是只有少数程序员了解 JAR 文件格式的强大功能。在本文中,作者探讨了 JAR 格式的许多功能和优势,包括打包、可执行的 JAR 文件、安全性和索引。JAR 文件是什么?JAR 文件格式以流行的 ZIP 文件格式为基础,用于将许多个文件聚集为一个文件。与 ZIP 文件不同的是,JAR 文件不仅用于压缩和发布,而且还用于部署和封装库、组件

我的天堂 1695

Java Jar

又见面啦技术人!我是你们的朋友曾续缘,今天准备了超实用的技术锦囊。JAR文件,即Java ARchive,是Java程序的一种集合打包形式。它可以包含编译后的类文件(.class文件)、相关的元数据、资源文件(如文本、图片等)。JAR文件实际上是ZIP文件的一种扩展,主要区别在于JAR文件可以包含一个文件,用于指定类路径、版本信息及其他配置选项。

曾续缘的博客 1175

linux下的jar命令

制作可执行的JAR文件包及jar命令详解    常常在网上看到有人询问:如何把 java 程序编译成 .exe 文件。通常回答只有两种,一种是制作一个可执行的 JAR 文件包,然后就可以像.chm 文档一样双击运行了;而另一种是使用 JET 来进行  编译。但是 JET 是要用钱买的,而且据说 JET 也不是能把所有的 Java 程序都编译成执行文件,性能也要打些折扣。所以,使用制作可执行 J

jiubugeinifo的专栏 2万+

Eclipse导出jar文件以及JAR File和Runnable JAR File的区别

现在我写好了一个java项目,想要导出可执行的jar文件。有两种方法,具体如下。I. Runnable JAR File 点击Eclipse左上角的“File”按钮,选择“Export”。 选择Java下的“Runnable JAR File”,点击“Next”。 直接”Finish”。 II. JAR File File>Import。 选择Java下的“JAR File”,点击“Next”。 点

liaotl10的博客 4568

Java文档类JAR与可运行JAR

可运行类jar:包含了可以直接运行的Java程序,通常包含了main()方法。这种jar文件可以被Java虚拟机(JVM)执行,从而启动程序并执行其中的代码逻辑。如下已经写好了一个HelloWorld.java程序,路径为:我在其对应的路径下进入cmd,如下:然后进行以下操作:(1)javac HelloWorld.java(编译文件生成文件)(2)jar cfe HelloWorld.jar HelloWorld HelloWorld.class(将文件打包成,并指定HelloWorld。

2301_77034332的博客 1161
上一篇: 正则校验手机号
下一篇: jietty跨域请求
go_sparrow
博客等级 码龄11年 25粉丝 257原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值