3. Jar文件提取与查看

一灰灰blogJavaJDKJava约 567 字大约 2 分钟

最近遇到一个奇怪的问题,一个jar包无法解压,直接使用jar xvf xxx.jar没有任何响应

因为实际想看的只是jar包中的某个class文件,基于此可以通过 jar tf 查看文件列表,在通过 jar xf xxx.jar xxxfile的方式来解压指定文件来实现目的

接下来记录一下jar包的几个操作case

1. jar包生成

直接通过jar命令可以非常简单的将class文件打包到一个jar中

一个简单的java类

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

打包jar命令

javac Hello.java
jar xvf Hello.jar Hello.class

直接使用上面这种打包,会有一个问题,当jar包中,有多个class文件存在main方法时,会提示没有主清单属性

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

主要原因就是在清单文件MANIFEST.MF中,没有指定主类

指定主类

Manifest-Version: 1.0
Created-By: 1.8.0_171 (Oracle Corporation)
Main-Class: Hello

打包命令如下(下面新增了一个Wel.java,源码就不说了)

jar cvfm B.jar MAINFEST.MF -c Hello.class Wel.class

2. jar文件列表查看

查看jar中有哪些文件,除了直接使用vim之外,还可考虑通过下面的命令

# tf 来查看jar包中的文件列表
$ jar tf B.jar
META-INF/
META-INF/MANIFEST.MF
Hello.class
Wel.class

使用tf进行查看,就可以结合 grep 来过滤指定的文件

3. 指定文件提取

对于jar文件整个解压,可以直接使用

jar xvf B.jar

当我们只希望提取jar包中的某个文件时,可以在后面添加需要提取的文件路径

# 指定文件提取
jar xf B.jar Hello.class

一灰灰的联系方式

尽信书则不如无书,以上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激

QrCode
QrCode
Loading...