211228-Jar文件提取与查看

文章目录
  1. 1. jar包生成
  2. 2. jar文件列表查看
  3. 3. 指定文件提取
  • 一灰灰的联系方式
  • 最近遇到一个奇怪的问题,一个jar包无法解压,直接使用jar xvf xxx.jar没有任何响应

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

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

    1. jar包生成

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

    一个简单的java类

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

    打包jar命令

    1
    2
    javac Hello.java
    jar xvf Hello.jar Hello.class

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

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

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

    指定主类

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

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

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

    2. jar文件列表查看

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

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

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

    3. 指定文件提取

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

    1
    jar xvf B.jar

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

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

    一灰灰的联系方式

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

    QrCode

    # Java

    评论

    Your browser is out-of-date!

    Update your browser to view this website correctly. Update my browser now

    ×