Java基础 - jar命令详解(1)打包基本的java项目

1.jar 命令的基本说明

在cmd 中输入 jar 回打印出 jar 命令的相关参数,
常用的几个参数如下 : 
 -c : 创建.jar文件 
 -v : 输出打包过程中的详细信息
 -f : 指定目标 jar文件的名称
-m: 指定自定义的 MANIFEST.MF 清单文件(自己可以在MANIFEST.MF中添加程序入口主类)
(-m 参数,如果打成的jar包中没有程序入口类,可以省略该参数)

2.打jar包的基本思路

1.编译项目,将java文件统统编译为 class文件
2.打包class文件
3.如果是可以运行的jar包,则 可以通过执行 java -jar xxx.jar 命令 来验证是否正确。

3. 两种打包的基本情景

下面两种情景都是以 可以运行的jar包 (包含main主类的jar包) 为例,进行介绍。

3.1 普通目录结构的项目

此处的 普通目录结构表示 : 没有 包结构的项目

3.1.1 项目结构

 javac01
       | -- src  : 源码目录
            | -- Javac01.java
       | -- target  : 编译后的文件位置
            | -- Javac01.class

3.1.2 文件内容

》 Javac01.java

public class Javac01{
	public static void main(String[] args) {
		System.out.println("Hello Javac01");
		System.out.println("你好 Javac01");
	}
}

3.1.3 javac编译项目

打开cmd命令行创建,进入到 javac01项目中,执行编译命令
javac src\Javac01.java -d target -encoding utf-8
【如果有对此命令不熟悉的小伙伴,可以参考这篇博客 javac编译java项目

在这里插入图片描述

3.1.4 准备 MANIFEST.MF 清单文件

此处是为了指定jar包的入口程序,如果没有入口程序,只是单纯的一个工具jar包,
可以跳过此步骤,使用默认生成的即可。
Main-Class: Javac01 : 表示此jar包直接运行的入口类。

》 注意:此文件的最后一行一定是一个空行
》 注意:此文件的每一行的后面都要有一个空格

Manifest-Version: 1.0
Created-By: 1.8.0_261 (Oracle Corporation)
Main-Class: Javac01

3.1.5 执行打包命令

进入到存放 class文件的target目录中,执行打包命令
jar -cvfm javac01.jar MANIFEST.MF *.class
* 表示把当前目录下的所有 class 文件都打入jar包

在这里插入图片描述

在这里插入图片描述

3.1.6 运行jar包

运行命令 : java -jar jar包的名称

在这里插入图片描述

3.1.7 打开jar包查看压缩包中的内容

在这里插入图片描述

3.2 正常的java项目

此处的 正常的java项目表示 : 包含正常 包结构的java项目

3.2.1 项目结构

javac02
       | -- src  : 源码目录
            | -- com
                | -- northcastle
                     | -- Javac02A.java
                     | -- Javac02B.java 
               | -- utile
                     | -- JavaUtile.java
       | -- target  : 编译后的文件位置
          | -- com
               | -- northcastle
                    | -- Javac02A.class 
                    | -- Javac02B.class 

3.2.2 文件内容

》 Javac02A.java

package com.northcastle; // 指定包名

public class Javac02A{
	public void sayHello(){
		System.out.println("Hello Javac02A");
		System.out.println("你好 Javac02A");
	}
}

》Javac02B.java

package com.northcastle; // 指定包名

import com.northcastle.Javac02A; // 引入依赖的类

public class Javac02B{
	public static void main(String[] args) {
		// 创建Javac02A对象,并调用方法
		Javac02A javac02A = new Javac02A();
		javac02A.sayHello();
	}
}

》JavaUtile.java

package com.utile; // 指定包名

public class JavaUtile{
	public static void isEmpty(){
		System.out.println("恭喜你调用成功了这个isEmpty工具方法!");
	}
}

》 javaList.txt : 列出了要被编译的java源码文件

src\com\northcastle\Javac02A.java
src\com\northcastle\Javac02B.java
src\com\utile\JavaUtile.java

3.2.3 javac编译项目

打开cmd命令行创建,进入到 javac01项目中,执行编译命令
javac @javaList.txt -d target -encoding utf-8
【如果有对此命令不熟悉的小伙伴,可以参考这篇博客 javac编译java项目

在这里插入图片描述

3.2.4 准备 MANIFEST.MF 清单文件

此处是为了指定jar包的入口程序,如果没有入口程序,只是单纯的一个工具jar包,
可以跳过此步骤,使用默认生成的即可。
Main-Class: com.northcastle.Javac02B : 表示此jar包直接运行的入口类。

》 注意:此文件的最后一行一定是一个空行
》 注意:此文件的每一行的后面都要有一个空格

Manifest-Version: 1.0
Created-By: 1.8.0_261 (Oracle Corporation)
Main-Class: com.northcastle.Javac02B

3.2.5 执行打包命令

进入到存放 class文件的target目录中,执行打包命令
jar -cvfm javac02.jar MANIFEST.MF com
com 表示把com目录下的所有 class 文件都打入jar包

在这里插入图片描述

3.2.6 运行jar包

运行命令 : java -jar jar包的名称

在这里插入图片描述

3.2.7 打开jar包查看压缩的内容

在这里插入图片描述

4.完成

Congratulations!
You are one step closer to success!

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值