`
mingren135
  • 浏览: 69108 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JAVA-常用命令(jar、javap等)

 
阅读更多

一、jar将多个文件合并为单个 JAR 归档文件,基于 ZIP 和 ZLIB 压缩格式。jar 的主要目的是便于将 java applet或应用程序打包成单个归档文件。将 applet 或应用程序的组件( .class 文件、图像和声音)合并成单个归档文件时,可以用 java 代理(如浏览器)在一次 HTTP 事务处理过程中 对它们进行下载,而不是对每个组件都要求一个新连接。这大大缩短了下载时间。jar 还能压缩文件,从而进一步缩短了下载时间。此外,它允许 applet 的作者对文件中的各个项进行签名,从而可认证其来源。

 

jar 工具的语法基本上与 tar 命令的语法相同。

1)将文件 foo.class 添加到现有的 JAR 文件 foo.jar 中

jar -uf foo.jar foo.class, u:通过添加文件或更改清单来更新现有的 JAR 文件

 

2)用 manifest 中的信息更新 foo.jar 的清单

 jar umf manifest foo.jar

 

3)解压jar包中指定的某个文件

jar xvf test3.jar META-INF/MANIFEST.MF

 

4)列出归档目录及文件

jar tvf wass-biz-core-1.0.jar

 

5)打包可执行文件

1、准备Manifest文件a.txt,文件内容:

Manifest-Version: 1.0 Created-By: 1.6.0_15 (Sun Microsystems Inc.)

Main-Class:<空格>+Hello <回车换行>

2、jar cvfm b.jar a.txt Hello.class 

3、java -jar b.jar

 

二、javap:方便的反编译工具,不能将字节码还原为java文件,只能编译出数据区、方法、类引用、vm指令等,不过在线上环境还是能起到快速定位问题的作用

Usage: javap <options> <classes>
where possible options include:
  -help  --help  -?        Print this usage message
  -version                 Version information
  -v  -verbose             Print additional information
  -l                       Print line number and local variable tables
  -public                  Show only public classes and members
  -protected               Show protected/public classes and members
  -package                 Show package/protected/public classes
                           and members (default)
  -p  -private             Show all classes and members
  -c                       Disassemble the code
  -s                       Print internal type signatures
  -sysinfo                 Show system info (path, size, date, MD5 hash)
                           of class being processed
  -constants               Show static final constants
  -classpath <path>        Specify where to find user class files
  -bootclasspath <path>    Override location of bootstrap class files

no options:列出-package对应的成员变量、方法,不带vm指令

D:\java_tools\ws\hello\bin>javap   javap.test.Hello
Compiled from "Hello.java"
public class javap.test.Hello {
  public static final java.lang.String NAME;
  protected java.lang.String AGE;
  java.lang.String Loc;
  public javap.test.Hello();
  public static void main(java.lang.String[]);
}

-p:所有类及成员变量 

Compiled from "Hello.java"
public class javap.test.Hello {
  public static final java.lang.String NAME;

  protected java.lang.String AGE;

  private java.lang.String sex;
...

-s:输出变量类型

public static void main(java.lang.String[]);
  Signature: ([Ljava/lang/String;)V
  Code:
     0: return

-c:反编译

D:\java_tools\ws\hello\bin>javap -c  javap.test.Hello
Compiled from "Hello.java"
public class javap.test.Hello {
  public static final java.lang.String NAME;

  protected java.lang.String AGE;

  public javap.test.Hello();
    Code:
       0: aload_0
       1: invokespecial #15                 // Method java/lang/Object."<init>":()V
       4: aload_0
       5: ldc           #17                 // String age
       7: putfield      #19                 // Field AGE:Ljava/lang/String;
      10: aload_0
      11: ldc           #21                 // String sex
      13: putfield      #22                 // Field sex:Ljava/lang/String;
      16: return

  public static void main(java.lang.String[]);
    Code:
       0: return
}

-sysinfo:显示系统级信息

Classfile /D:/java_tools/ws/hello/bin/javap/test/Hello.class
  Last modified 2014-1-4; size 534 bytes
  MD5 checksum beeebc871db00762f00025ed72d742b2
  Compiled from "Hello.java"

 

分享到:
评论

相关推荐

    JAVA上百实例源码以及开源项目源代码

     WDSsoft的一款免费源代码 JCT 1.0,它是一个Java加密解密常用工具包。 Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书  Java局域网通信——飞鸽传书源代码,大家都知道VB...

    一个Java程序员应该掌握的10项技能

    2、命令:必须熟悉JDK带的一些常用命令及其常用选项,命令至少需要熟悉:appletviewer、 HtmlConverter、jar、 java、javac、javadoc、javap、javaw、native2ascii、serialver,如果这些命令你没有全部使用过,那么...

    java开源包10

    MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...

    JAVA上百实例源码以及开源项目

     WDSsoft的一款免费源代码 JCT 1.0,它是一个Java加密解密常用工具包。 Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书  Java局域网通信——飞鸽传书源代码,大家都知道VB...

    java开源包1

    MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...

    java开源包4

    MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...

    java开源包101

    MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...

    java开源包11

    MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...

    java开源包6

    MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...

    java开源包9

    MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...

    java开源包8

    MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...

    java开源包5

    MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...

    java开源包3

    MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...

    java开源包2

    MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...

    java开源包7

    MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...

    Java资源包01

    MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...

Global site tag (gtag.js) - Google Analytics