如何手工打jar包
1. jar包和zip文件压缩包差不多的,唯一的就是多了一个叫manifest.mf(注意打包的时候要大写)的文件,这个叫做清单文件!清单文件用来指明我们打jar包的一些基本信息,最重要的是主区(Main Section)的四个属性:
- Manifest-Version:1.0 版本号
- Create-By:创建者,可以找一个jar包来写,或者根据公司来写
- Main-Class:如果这个jar包可以通过java -jar去调用执行,这一项需要填写
- Class-Path:类加载路径,引用其他的jar执行(在当前路径就直接写引用的jar包名字,如果不在当前路径,就要写全路径名),多个jar包用空格隔开
- 注意:manifest.mf最后一定要有一行空格行,否则报错; 各个属性的冒号后必须要有一个空格
2. 在CMD命令行查看jar的常用选项,jar -help 常用的是-cvfm和-cvfe
3. 打包时,先打被依赖项,即B--->A,则先打包A,打包语句jar -cvf pa.jar com/gqgroup/learn/A.class
4. 然后准备MANIFEST.MF,填入一下内容
Manifest-Version: 1.0
Created-By: 1.8.0_121 (Oracle Corporation)
Class-Path: pa.jar
Main-Class: com.gqgroup.learn.B
5. 将编译好的B.class和MANIFEST.MF,pa.jar,在同一个目录中执行jar -cvfm pb.jar MANIFEST.MF com/gqgroup/learn/B.class
6. 执行打包的pb.jar包: java -jar pb.jar,结果如下:
下面附上编译A.java和B.java的命令以及其源码(A和B类都是带包名编译的)
javac -encoding utf-8 -d . A.java
javac -cp pa.jar -encoding utf-8 -d . B.java
package com.gqgroup.learn; public class A{ public void sayHello(){ System.out.println("hello world!"); } }
package com.gqgroup.learn; import com.gqgroup.learn.A; public class B{ public static void main(String[] args){ A a = new A(); a.sayHello(); System.out.println("i will learn package!"); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律