Jar包基础学习

一.什么是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包的初步认识与了解!

发布了62 篇原创文章 · 获赞 6 · 访问量 4465

猜你喜欢

转载自blog.csdn.net/HU1656/article/details/104105392