多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 1. 类路径 1. AppClassLoader加载class的路径,就是classpath 2. 默认classpath是执行java 命令的路径下 1. 类可以被使用和加载必须在类路径(classpath)下,在可以被加载 # 2. jar ## 2.1 jar包结构 1.jar包元数据信息,Manifest 文件是一个元数据文件,它包含键 - 值对(英语:Attribute–value pair)数据。 2.如果一个 JAR 文件被当成可执行文件,那么其中的 Manifest 文件需要指出该程序的主类文件。通常 Manifest 文件的文件名为 `MANIFEST.MF` ![](https://img.kancloud.cn/bf/b9/bfb9b3686f33189992f1e636067a4bb8_747x343.png) 内容 ``` Manifest-Version: 1.0 Implementation-Title: ad-ops-server Implementation-Version: 0.0.1-SNAPSHOT Start-Class: com.faw_qm.ad_ops.BPAppApplication #主类 Spring-Boot-Classes: BOOT-INF/classes/ #类存放位置 Spring-Boot-Lib: BOOT-INF/lib/ # 依赖位置 Build-Jdk-Spec: 1.8 Spring-Boot-Version: 2.2.6.RELEASE Created-By: Maven Archiver 3.4.0 Main-Class: org.springframework.boot.loader.JarLauncher ``` BOOT-INF:存放了程序编译的class文件和依赖的jar包 ![](https://img.kancloud.cn/2d/e7/2de7f2b572668ad7e0720474bcd97931_839x252.png) ## 2.2 自己创建一个可使用jar包 生成jar包一般用maven,也可以使用java提供的jar命令 1. 创建A和B类java文件 ![](https://img.kancloud.cn/3d/3e/3d3e76db6092e2e27f79f8e8a3d1395d_792x217.png) 2. 编译 ``` javac A.java B.java ``` ![](https://img.kancloud.cn/4e/5b/4e5b2ae5155913975b9d7fb2a2413740_482x277.png) 3.打成jar包 ``` jar cvf ab.jar A.class B.class ``` ![](https://img.kancloud.cn/b1/f8/b1f86fa646cc52a5d0e78a42a63d502d_607x353.png) 4. 创建C类,使用A类 ~~~ public class C { public static void main(String[] args) { A a = new A(); System.out.println("加载了类:" + a.getClass().getName()); } } ~~~ ![](https://img.kancloud.cn/76/2d/762da2fee887d33250eb245fc1e182ff_872x383.png) 5. 只保留jar包,并编译C测试是否可以加载jar包中的A ![](https://img.kancloud.cn/98/b0/98b01a7672f905277bf9d41dff23edbc_584x230.png) 编译报错找不到A类,把jar包放在classpath下(如果有A.class文件就可以直接加载,jar则不能) 配置环境变量 ![](https://img.kancloud.cn/1e/7a/1e7a0fb6a2c394b463088b12b15a48a0_1038x357.png) Linux ``` $ cat ~/.bash\_profile export JAVA\_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0\_281.jdk/Contents/Home export CLASSPATH=.:$JAVA\_HOME/lib/dt.jar:$JAVA\_HOME/lib/tools.jar:/Users/woniu/jartest/ab.jar export PATH=$JAVA\_HOME/bin:$PATH ``` ``` D:\workspace\ad-ops\src\main\java>javac C.java D:\workspace\ad-ops\src\main\java> ``` ![](https://img.kancloud.cn/4d/fb/4dfb5fad4545421d64ce04ecdd694dd3_661x287.png)