关于 jar 包
概念:
jar 是 Java ARchive 的缩写,是一种基本 zip 格式的文件格式。
目标是将 java 生成的类文件、资源文件、管理文件 等按照特定的结构打包成一个独立的文件,方便程序的发布或网络的下载。
cmd 环境下打 jar 包
Hello.java
public class Hello{
public static void sayHello(String[] target){
System.out.println("你好 "+target);
}
}
Main.java
public class Main{
public static void sayHello(String[] args){
Hello.sayHello("世界");
}
}
先编译成 .class 文件:
查看 jar 用法:jar -help
cmd 环境的该文件夹下运行以下命令:
jar -cvf mysqldemo.jar Main.class Hello.class
将jar包解压之后:
mysqldemo\
META-INF\
MANIFEST.MF
Main.class
Hello.class
纯类的 jar 包:只有一个作用,供其他程序使用
将 jar 包转变为可执行程序入口
认识 MANIFEST.MF 文件:
可以把 Main.class 当成一个送过朋友的礼品,jar 文件认为是一个包装好的盒。
那 MANIFEST.MF 就是一个礼品清单,里面说明了应该如何使用礼品。
观察现在的 MANIFEST.MF 文件内容:
Manifest-Version: 1.0
Created-By: 1.8.0_211 (Oracle Corporation)
描述 jar 包的版本和创建工具。
认识 Main-Class 标签:
Main-Class 的含义:
是给出打包好的 jar 文件中,哪个类是我们程序的入口类
(即:直接运行 jar 包文件时,JVM 启动哪个类中的 main 方法)。
将 jar 包变成可运行的 jar 文件:
新建一个 Manifest.txt 文件,并写入以下内容
值就是我们要运行类的全路径
Main-Class: com.bit.Main
注意: 一定要在最后跟一个空行
然后在 cmd 环境的该文件夹下运行命令:
jar cvfm Runnable.jar Manifest.txt com\bit\Main.class
运行带有 Main-Class 的 jar 文件:
在 cmd 环境的该文件夹下运行命令:
java -jar Runnable.jar
则输出: 你好世界
使用 jar包
Run 编译错误:
因为类放在 jar 文件中,javac 编译器无法找到这个类文件,所以我们需要通过指定 classpath 的方式,告诉编译器去哪里找到类。
将 mysqldemo.jar 复制到 使用jar包 下:
再次编译:
".;mysqldemo.jar"
'.' 当前路径找
';' 或者
'mysqldemo.jar' 在这个jar包里找
运行:异常
原因类似,但是这次找不到类的是 JVM,需要通过 classpath 的配置方式,告诉 JVM 类的位置。
运行成功:
类的加载
cmd 下的几个操作
如何查看环境变量:
set
如何查看具体的环境变量:
echo %path%
可以使用一次性的环境变量:
set classpath=“.;mysqldemo.jar”
IDEA 环境中的打 jar 包
选择 Prject Structure 选项,
选择 Artifacts,点击 +,选择 JAR 类型,From modules with dependencies:
根据需要,选择是否填充 Main-Class:
在 Build 中选择 Build Artifacts:
运行:
选中打好的 jar包,点击“Run ‘jar.jar’ with Coverage”:
运行结果:
jar 包可以直接运行的
1.java类名称
2.java -jar jar包文件路径
IDEA 中使用 jar 包
选择 Prject Structure 选项:
选择 Libraries,点击 +,选择 Java:
选择 jar 包文件:
直接通过 jar 包使用别人完成类库的缺点
- 需要自行下载 jar 文件
- 需要手动把 jar 文件复制到项目目录中
- 需要更改很多的 IDEA 配置
- 如果别人的 jar 包还依赖了其他类库,需要递归进行这个过程