Jar包基础学习

article/2025/9/22 22:59:04

一.什么是jar包

  • 在软件领域,JAR文件(Java归档,英语:Java Archive)是一种软件包文件格式,通常用于聚合大量的Java类文件、相关的元数据和资源(文本、图片等)文件到一个文件,以便开发Java平台应用软件或库。JAR文件是一种归档文件,以ZIP格式构建,以.jar为文件扩展名。JAR文件内的文件名是Unicode文本。
  • JAR文件的全称是Java Archive File,意思就是Java档案文件。通常JAR文件是一种压缩文件,与常见的ZIP压缩文件兼容,同城也被称为JAR包。JAR文件与zip文件的区别就是在JAR文件中默认包含了一个名为META-INF/MANIFEST.MF的清单文件,这个清单文件是在生成JAR文件时系统自动创建的。
  • JAR文件是跨平台的,所以不必关心涉及具体平台的问题。除了可以包括声音和图像文件以外,也可以在其中包括类文件。
  • JAR 文件格式以流行的 ZIP 文件格式为基础。与 ZIP 文件不同的是,JAR 文件不仅用于压缩和发布,而且还用于部署和封装库、组件和插件程序,并可被像编译器和 JVM 这样的工具直接使用。

jar包是java中的一种特殊的压缩格式的包
jar包中压缩的是.class文件
把jar包提供给任何人都可以
jar是一种规定了文件结构的zip压缩包

二.JAR文件相关特点

JAR 文件格式提供了许多优势和功能,它们包括:
1.安全性
 可以对 JAR 文件内容加上数字化签名。这样,能够识别签名的工具就可以有选择地为您授予软件安全特权,这是其他文件做不到的,它还可以检测代码是否被篡改过。
 
2.减少下载时间 
如果一个 applet 捆绑到一个 JAR 文件中,那么浏览器就可以在一个 HTTP 事务中下载这个 applet 的类文件和相关的资源,而不是对每一个文件打开一个新连接。

3.压缩
 JAR 格式允许您压缩文件以提高存储效率。
 
4.传输平台扩展
 Java 扩展框架(Java Extensions Framework)提供了向 Java 核心平台添加功能的方法,这些扩展是用 JAR 文件打包的(Java 3D 和 JavaMail 就是由 Sun 开发的扩展例子)。
 
5.包密封
存储在 JAR 文件中的包可以选择进行密封,以增强版本一致性和安全性。密封一个包意味着包中的所有类都必须在同一 JAR 文件中找到。

6.包版本控制
一个 JAR 文件可以包含有关它所包含的文件的数据,如厂商和版本信息。

7.可移植性
处理 JAR 文件的机制是 Java 平台核心 API 的标准部分。

三.jar包使用范围

一个 JAR 文件可以用于:

□ 用于发布和使用类库
□ 作为应用程序和扩展的构建单元
□ 作为组件、applet 或者插件程序的部署单位
□ 用于打包与组件相关联的辅助资源

四.命令行下jar包的用法

如果下命令行窗口运行不带任何参数的jar命令,系统将会提示jar命令的用法,提示信息如图所示:
在这里插入图片描述

五.为什么要打jar包

给别人用的时候一般给别人的是class文件。如果有很多类怎么办?那么就有很多.class文件。因此把它变成一个压缩包!

windows下的压缩包是.zip格式等,而eclipse压缩包是.jar格式。

六.如何查看jar包

用解压缩软件解压即可。可以看到里面有哪些文件。例如解压一个jar包,里面内容如下:
在这里插入图片描述

七.cmd下如何写个类并打jar包

有一个Hello类,里面有一个say方法;还有一个Main类,main方法里面调用Hello类里面的say方法

public class Hello{public static void say(String s){System.out.println("你好  "+s);}
}
public class Main{public static void main(String[] args){Hello.say("世界");}
}

步骤:
(1)javac -encoding UTF-8 Main.java (只要编译Main.java就行了,因为Main类调用了Hello类,运行完后,类之间的依赖关系会建好)

(2)打包的命令
在这里插入图片描述
在这里插入图片描述
(3)打包完成!把所有编译所生成的.class文件打jar包成功
在这里插入图片描述

八.cmd环境下使用Jar包

public class Run{public static void main(String[] args){Hello.say("2020Nian");}
}

在这里插入图片描述
1.编译Run.java文件,发现编译不通过,找不到Hello类
在这里插入图片描述

原因:编译时,是去当前目录下去找需要的内容(类文件),但是当前目录是以下截图,里面并没有Hello类

在这里插入图片描述

2.然后我们把jar包直接复制过来(jar包是我们刚刚打的包,里面有Hello类)

在这里插入图片描述

编译Run.java文件,发现结果还是编译不通过

在这里插入图片描述
因此我们知道,尽管我们把含有Hello类的jar包放到了当前目录下,但是还是编译不通过,就是说还是没有找到Hello类,无法调用它里面的方法。那么我们需要思考:编译阶段如何告诉对方类在哪里?(告诉对方,对方想要的资源在哪里?)

在这里插入图片描述
在这里插入图片描述
.表示当前目录
…表示上级目录

3.然后编译Run.java文件,发现就成功了,Run.class文件已经生成
在这里插入图片描述
4.然后运行Run.java文件,问题又出现了:运行不通过,说白了,运行期间还是没有找到那个类(Hello类)
在这里插入图片描述
查找java -help发现:
在这里插入图片描述
5.然后进行运行Run.java问价:成功了在这里插入图片描述

九.jar包可以直接运行

java -jar jar包的文件名
但是要想运行,必须告诉你的入口类是什么,例如现在运行我们写的jar包,发现不能运行,因为不知道jar包里面的Main-Class是什么

在这里插入图片描述

十.Idea上如何打jar包,运行jar包

1.先创建两个类
在这里插入图片描述
2.打jar包 File–>Project Structure–>Artifacts…
在这里插入图片描述

指定主类:Main Class (目的:可以直接运行jar包)
在这里插入图片描述
然后
在这里插入图片描述
在这里插入图片描述
4.然后完成:jar包名称为默认的工程名称.jar
在这里插入图片描述
5.运行jar包
在这里插入图片描述

十一.便捷方式在Idea上打jar包

1.随便写一份代码
在这里插入图片描述
双击jar:jar
出现这个就成功了
在这里插入图片描述
在这里插入图片描述
以上就是对jar包的初步认识与了解!


http://chatgpt.dhexx.cn/article/ihXZ7JrY.shtml

相关文章

jar包完全解读

本文抄自:jar包的一些事儿 前言: 作为java程序员,日常工作就是打jar包,可是对jar包的了解有多少呢? 一、什么是jar包 jar包就是 Java Archive File,顾名思义,它的应用是与 Java 息息相关的&…

Python-基于词典-中文分词算法

文章目录 三种分词算法比较逆向最大匹配从后往前扫描词典匹配 概率分词原理DAG计算大概率路径 封装 图论知识补充图的表示方法概率图模型贝叶斯网络 三种分词算法比较 dt {空调: 1, 调和: 1, 和风: 1, 风扇: 1,空: 1, 调: 1, 和: 2, 风: 1, 扇: 1} # 词典 max_len max(len(…

分词算法介绍

如有需要可以转载,但转载请注明出处,并保留这一块信息,谢谢合作! 部分内容参考互联网,如有异议,请跟我联系! 作者:刀剑笑(Blog:http://blog.csdn.net/jyz3051) Email:jyz3051 at yahoo dot com dot cn(at请替换成&#xff…

为什么中文分词比英文分词更难?有哪些常用算法?(附代码)

导读:人类文明的重要标志之一是语言文字的诞生。数千年来,几乎人类所有知识的传播都是以语言和文字作为媒介。 自然语言处理是使用计算机科学与人工智能技术分析和理解人类语言的一门学科。在人工智能的诸多范畴中,自然语言的理解以其复杂性、…

中文分词工具讨论

中文分词工具讨论 1 中文分词原理介绍 1.1 中文分词概述 中文分词(Chinese Word Segmentation) 指的是将一个汉字序列切分成一个一个单独的词。分词就是将连续的字序列按照一定的规范重新组合成词序列的过程。 1.2 中文分词方法介绍 现有的分词方法可分为三大类&#xff1…

几种中文分词工具

word分词 word分词是一个Java实现的分布式的中文分词组件,提供了多种基于词典的分词算法,并利用ngram模型来消除歧义。能准确识别英文、数字,以及日期、时间等数量词,能识别人名、地名、组织机构名等未登录词。能通过自定义配置文…

NLP词法分析(一):中文分词技术

文分词介绍 中文分词相较于英文分词要难许多,因为英文本身就是由单词与空格组成的,而中文则是由独立的字组成的,但同时语义却是有词来表达的。因此对于中文的分析与研究,首先应寻找合适的方法进行分词。现有的中文分词技术主要分…

双向最大匹配算法——基于词典规则的中文分词(Java实现)

目录 前言 一、中文分词理论描述 二、算法描述 1、正向最大匹配算法 2、反向最大匹配算法 3、双剑合璧 三、案例描述 四、JAVA实现完整代码 五、组装UI 六、总结 前言 中文分词所需要的词典放在公众号,关注文章末尾的公众号,回复“字典”获取…

中文分词技术及应用

中文分词技术及应用中文分词算法有5大类: 1、 基于词典的方法 2、基于统计的方法 3、基于规则的方法 4、基于字标注的方法 5、基于人工智能的技术(基于理解)的方法 中文分词目前有4个瓶颈: 1、分词歧义 2、未登陆词识别 3、分词粒…

【NLP】为什么中文分词比英文分词更难?有哪些常用算法?(附代码)

导读:人类文明的重要标志之一是语言文字的诞生。数千年来,几乎人类所有知识的传播都是以语言和文字作为媒介。 自然语言处理是使用计算机科学与人工智能技术分析和理解人类语言的一门学科。在人工智能的诸多范畴中,自然语言的理解以其复杂性、…

正向最大匹配中文分词算法

中文分词一直都是中文自然语言处理领域的基础研究。目前,网络上流行的很多中文分词软件都可以在付出较少的代价的同时,具备较高的正确率。而且不少中文分词软件支持Lucene扩展。但不管实现如何,目前而言的分词系统绝大多数都是基于中文词典的…

NLP|中文分词技术及应用

摘要:中文分词是中文信息处理的重要基础,本文详细阐述了目前主要的几种中文分词算法的技术原理 、中文分词目前的瓶颈和评价准则,以及中文分词的具体应用。 中文分词指将一个汉字序列切分成一个个单独的词。现有的中文分词算法有五大类:基于词典的方法,基于统计的方法,基…

入门科普:一文看懂NLP和中文分词算法(附代码举例)

导读:在人类社会中,语言扮演着重要的角色,语言是人类区别于其他动物的根本标志,没有语言,人类的思维无从谈起,沟通交流更是无源之水。 所谓“自然”乃是寓意自然进化形成,是为了区分一些人造语言…

中文分词算法—— 基于词典的方法

1、基于词典的方法(字符串匹配,机械分词方法) 定义:按照一定策略将待分析的汉字串与一个“大机器词典”中的词条进行匹配,若在词典中找到某个字符串,则匹配成功。 按照扫描方向的不同:正向匹配和逆向匹配…

【NLP】中文分词:原理及分词算法

一、中文分词 词是最小的能够独立活动的有意义的语言成分,英文单词之间是以空格作为自然分界符的,而汉语是以字为基本的书写单位,词语之间没有明显的区分标记,因此,中文词语分析是中文信息处理的基础与关键。 Lucene中…

常见分词算法综述

常见分词算法综述 文章目录 常见分词算法综述一、基于词典的分词1. 最大匹配分词算法2. 最短路径分词算法:2.1基于dijkstra算法求最短路径:2.2N-dijkstra算法求最短路径:2.3. 基于n-gram model的分词算法: 二、基于字的分词算法生…

中文分词原理及分词工具介绍

转自:https://blog.csdn.net/flysky1991/article/details/73948971 本文首先介绍下中文分词的基本原理,然后介绍下国内比较流行的中文分词工具,如jieba、SnowNLP、THULAC、NLPIR,上述分词工具都已经在github上开源,后…

中文分词常见方法

中文分词是中文文本处理的一个基础步骤,也是中文人机自然语言交互的基础模块。不同于英文的是,中文句子中没有词的界限,因此在进行中文自然语言处理时,通常需要先进行分词,分词效果将直接影响词性、句法树等模块的效果…

自然语言处理之中文分词技术与算法

1 正向最大匹配法 1.1 正向最大匹配(Maximum Match Method, MM法)的基本思想: 假定分词词典中的最长词有i个汉字字符,则用被处理文档的当前字串中的前i个字作为匹配字段,查找字典。若字典中存在这样的一个i字词&#…

列举:中文分词算法你知道几种?

列举:中文分词算法你知道几种? 摘要:看似普通的一句话,甚至几个词,在机器眼里都要经过好几道“程序”。这个过程主要靠中文分词算法,这个算法分为三大类:机械分词算法、基于n元语法的分词算法、…