Java 学习笔记

所有文章
📖 最新文章 transmittable-thread-local 库 JOOR 反射库 Lombok 库:为你减少样板代码 Slf4j 日志组件的使用 加速maven、gradle依赖下载
📖 Java 基础 安装 第一个程序 使用 UTF-8 编写代码 空值 null 正则表达式 线程 日期/时间 匿名类 枚举 ThreadLocal 线程本地变量 动态代理 jar 命令

Java : jar 命令



示例: Hello World

在当前目录下创建文件 HelloWorld.java ,内容如下:

public class HelloWorld {

    public static void main(String[] args) {
        System.out.println("你好,乐天笔记");
    }

}

编译:

$ javac HelloWorld.java

查看 class 文件:

$ ls
HelloWorld.class HelloWorld.java

打包到 jar:

$ jar cvf hello.jar HelloWorld.class
已添加清单
正在添加: HelloWorld.class(输入 = 435) (输出 = 319)(压缩了 26%)

此时当前目录会出现 hello.jar:

$ ls
HelloWorld.class HelloWorld.java  hello.jar

执行 hello.jar 中的 HelloWorld 类:

$ java -cp hello.jar HelloWorld
你好,乐天笔记

若直接用-jar执行 hello.jar 会报错:

$ java  -jar hello.jar
hello.jar中没有主清单属性

示例: 指定主清单属性

todo.

示例: 打包多个类

当前目录下文件结构:

$ tree
.
└── com
    └── letianbiji
        └── example
            ├── HelloWorld.java
            └── Util.java

Util.java 内容:

package com.letianbiji.example;

public class Util {

    public static int add(int a, int b) {
        return a + b;
    }

}

HelloWorld.java 内容如下:

package com.letianbiji.example;

public class HelloWorld {

    public static void main(String[] args) {
        System.out.println("1+2=" + Util.add(1, 2));
    }
}

编译 java 代码:

$ javac com/letianbiji/example/Util.java

$ javac com/letianbiji/example/HelloWorld.java

查看编译结果:

$ tree
.
└── com
    └── letianbiji
        └── example
            ├── HelloWorld.class
            ├── HelloWorld.java
            ├── Util.class
            └── Util.java

打jar包方式1:

$ jar cvf hello.jar com/letianbiji/example/Util.class com/letianbiji/example/HelloWorld.class
已添加清单
正在添加: com/letianbiji/example/Util.class(输入 = 261) (输出 = 209)(压缩了 19%)
正在添加: com/letianbiji/example/HelloWorld.class(输入 = 705) (输出 = 426)(压缩了 39%)

打jar包方式2:

$ jar cvf hello.jar **/*.class
已添加清单
正在添加: com/letianbiji/example/HelloWorld.class(输入 = 705) (输出 = 426)(压缩了 39%)
正在添加: com/letianbiji/example/Util.class(输入 = 261) (输出 = 209)(压缩了 19%)

查看 hello.jar 结构:

$ jar tf hello.jar
META-INF/
META-INF/MANIFEST.MF
com/letianbiji/example/HelloWorld.class
com/letianbiji/example/Util.class

执行 HelloWorld 类:

$ java -cp hello.jar com.letianbiji.example.HelloWorld
1+2=3

( 本文完 )

文章目录