Mac终端输入javap报错

来源:互联网 发布:ie没有java加载项 编辑:程序博客网 时间:2024/06/04 20:03

1、报错内容:

     a、错误:找不到类

     b、错误:找不到或无法加载主类


2、原因:虽然idea里面编译过对应文件,但是终端输入javap时候,依然报错:a或者b,虽然已经进入了对应文件的路径下面。好像是Mac需要首先找到文件所做目录,然后在该环境下利用javac编译一下该.java文件;再运行javap命令查看该.java文件对应的class文件的字节码。


3、javap功能:javap是idk自带的反编译工具命令,来查看class文件的字节码信息。


4、说明:Mac环境下,我的文件存储路径:

文件:~/IdeaProjects/JavaBaseTest/src/niukeWeb/evalRPN.java


5、首先进入目录:niukeWeb

   该目录下编译该文件evalRPN.java

   javap查看.class文件的字节码

以上3个命令如图:



输入第3个命令后:终端显示信息如下:

警告: 二进制文件evalRPN包含niukeWeb.evalRPNClassfile /Users/caoxiaohong/IdeaProjects/JavaBaseTest/src/niukeWeb/evalRPN.class  Last modified 2017-6-22; size 1704 bytes  MD5 checksum ca2560d25a5b56ffa2e99b2294fd66fc  Compiled from "evalRPN.java"public class niukeWeb.evalRPN  minor version: 0  major version: 52  flags: ACC_PUBLIC, ACC_SUPERConstant pool:   #1 = Methodref          #29.#48        // java/lang/Object."<init>":()V   #2 = Class              #49            // java/util/Stack   #3 = Methodref          #2.#48         // java/util/Stack."<init>":()V   #4 = Fieldref           #19.#50        // niukeWeb/evalRPN.stack:Ljava/util/Stack;   #5 = Fieldref           #19.#51        // niukeWeb/evalRPN.length:I   #6 = Methodref          #10.#52        // java/lang/Integer.parseInt:(Ljava/lang/String;)I   #7 = String             #53            // +   #8 = Methodref          #21.#54        // java/lang/String.equals:(Ljava/lang/Object;)Z   #9 = Methodref          #2.#55         // java/util/Stack.pop:()Ljava/lang/Object;  #10 = Class              #56            // java/lang/Integer  #11 = Methodref          #10.#57        // java/lang/Integer.intValue:()I  #12 = Fieldref           #19.#58        // niukeWeb/evalRPN.result:I  #13 = Methodref          #10.#59        // java/lang/Integer.valueOf:(I)Ljava/lang/Integer;  #14 = Methodref          #2.#60         // java/util/Stack.push:(Ljava/lang/Object;)Ljava/lang/Object;  #15 = String             #61            // -  #16 = String             #62            // *  #17 = String             #63            // /  #18 = Methodref          #21.#64        // java/lang/String.trim:()Ljava/lang/String;  #19 = Class              #65            // niukeWeb/evalRPN  #20 = Methodref          #19.#48        // niukeWeb/evalRPN."<init>":()V  #21 = Class              #66            // java/lang/String  #22 = String             #67            // 2  #23 = String             #68            // 1  #24 = String             #69            // 3  #25 = Methodref          #19.#70        // niukeWeb/evalRPN.evalRPN:([Ljava/lang/String;)I  #26 = Fieldref           #71.#72        // java/lang/System.out:Ljava/io/PrintStream;  #27 = Methodref          #73.#74        // java/io/PrintStream.println:(I)V  #28 = String             #75            // 0  #29 = Class              #76            // java/lang/Object  #30 = Utf8               stack  #31 = Utf8               Ljava/util/Stack;  #32 = Utf8               Signature  #33 = Utf8               Ljava/util/Stack<Ljava/lang/Integer;>;  #34 = Utf8               length  #35 = Utf8               I  #36 = Utf8               result  #37 = Utf8               <init>  #38 = Utf8               ()V  #39 = Utf8               Code  #40 = Utf8               LineNumberTable  #41 = Utf8               evalRPN  #42 = Utf8               ([Ljava/lang/String;)I  #43 = Utf8               StackMapTable  #44 = Utf8               main  #45 = Utf8               ([Ljava/lang/String;)V  #46 = Utf8               SourceFile  #47 = Utf8               evalRPN.java  #48 = NameAndType        #37:#38        // "<init>":()V  #49 = Utf8               java/util/Stack  #50 = NameAndType        #30:#31        // stack:Ljava/util/Stack;  #51 = NameAndType        #34:#35        // length:I  #52 = NameAndType        #77:#78        // parseInt:(Ljava/lang/String;)I  #53 = Utf8               +  #54 = NameAndType        #79:#80        // equals:(Ljava/lang/Object;)Z  #55 = NameAndType        #81:#82        // pop:()Ljava/lang/Object;  #56 = Utf8               java/lang/Integer  #57 = NameAndType        #83:#84        // intValue:()I  #58 = NameAndType        #36:#35        // result:I  #59 = NameAndType        #85:#86        // valueOf:(I)Ljava/lang/Integer;  #60 = NameAndType        #87:#88        // push:(Ljava/lang/Object;)Ljava/lang/Object;  #61 = Utf8               -  #62 = Utf8               *  #63 = Utf8               /  #64 = NameAndType        #89:#90        // trim:()Ljava/lang/String;  #65 = Utf8               niukeWeb/evalRPN  #66 = Utf8               java/lang/String  #67 = Utf8               2  #68 = Utf8               1  #69 = Utf8               3  #70 = NameAndType        #41:#42        // evalRPN:([Ljava/lang/String;)I  #71 = Class              #91            // java/lang/System  #72 = NameAndType        #92:#93        // out:Ljava/io/PrintStream;  #73 = Class              #94            // java/io/PrintStream  #74 = NameAndType        #95:#96        // println:(I)V  #75 = Utf8               0  #76 = Utf8               java/lang/Object  #77 = Utf8               parseInt  #78 = Utf8               (Ljava/lang/String;)I  #79 = Utf8               equals  #80 = Utf8               (Ljava/lang/Object;)Z  #81 = Utf8               pop  #82 = Utf8               ()Ljava/lang/Object;  #83 = Utf8               intValue  #84 = Utf8               ()I  #85 = Utf8               valueOf  #86 = Utf8               (I)Ljava/lang/Integer;  #87 = Utf8               push  #88 = Utf8               (Ljava/lang/Object;)Ljava/lang/Object;  #89 = Utf8               trim  #90 = Utf8               ()Ljava/lang/String;  #91 = Utf8               java/lang/System  #92 = Utf8               out  #93 = Utf8               Ljava/io/PrintStream;  #94 = Utf8               java/io/PrintStream  #95 = Utf8               println  #96 = Utf8               (I)V{  java.util.Stack<java.lang.Integer> stack;    descriptor: Ljava/util/Stack;    flags:    Signature: #33                          // Ljava/util/Stack<Ljava/lang/Integer;>;  int length;    descriptor: I    flags:  int result;    descriptor: I    flags:  public niukeWeb.evalRPN();    descriptor: ()V    flags: ACC_PUBLIC    Code:      stack=3, locals=1, args_size=1         0: aload_0         1: invokespecial #1                  // Method java/lang/Object."<init>":()V         4: aload_0         5: new           #2                  // class java/util/Stack         8: dup         9: invokespecial #3                  // Method java/util/Stack."<init>":()V        12: putfield      #4                  // Field stack:Ljava/util/Stack;        15: return      LineNumberTable:        line 11: 0        line 12: 4  int evalRPN(java.lang.String[]);    descriptor: ([Ljava/lang/String;)I    flags:    Code:      stack=3, locals=5, args_size=2         0: aload_0         1: aload_1         2: arraylength         3: putfield      #5                  // Field length:I         6: aload_0         7: getfield      #5                  // Field length:I        10: iconst_1        11: if_icmpne     21        14: aload_1        15: iconst_0        16: aaload        17: invokestatic  #6                  // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I        20: ireturn        21: iconst_0        22: istore_2        23: iload_2        24: aload_0        25: getfield      #5                  // Field length:I        28: if_icmpge     321        31: aload_1        32: iload_2        33: aaload        34: ldc           #7                  // String +        36: invokevirtual #8                  // Method java/lang/String.equals:(Ljava/lang/Object;)Z        39: ifeq          97        42: aload_0        43: getfield      #4                  // Field stack:Ljava/util/Stack;        46: invokevirtual #9                  // Method java/util/Stack.pop:()Ljava/lang/Object;        49: checkcast     #10                 // class java/lang/Integer        52: invokevirtual #11                 // Method java/lang/Integer.intValue:()I        55: istore_3        56: aload_0        57: getfield      #4                  // Field stack:Ljava/util/Stack;        60: invokevirtual #9                  // Method java/util/Stack.pop:()Ljava/lang/Object;        63: checkcast     #10                 // class java/lang/Integer        66: invokevirtual #11                 // Method java/lang/Integer.intValue:()I        69: istore        4        71: aload_0        72: iload_3        73: iload         4        75: iadd        76: putfield      #12                 // Field result:I        79: aload_0        80: getfield      #4                  // Field stack:Ljava/util/Stack;        83: aload_0        84: getfield      #12                 // Field result:I        87: invokestatic  #13                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;        90: invokevirtual #14                 // Method java/util/Stack.push:(Ljava/lang/Object;)Ljava/lang/Object;        93: pop        94: goto          315        97: aload_1        98: iload_2        99: aaload       100: ldc           #15                 // String -       102: invokevirtual #8                  // Method java/lang/String.equals:(Ljava/lang/Object;)Z       105: ifeq          163       108: aload_0       109: getfield      #4                  // Field stack:Ljava/util/Stack;       112: invokevirtual #9                  // Method java/util/Stack.pop:()Ljava/lang/Object;       115: checkcast     #10                 // class java/lang/Integer       118: invokevirtual #11                 // Method java/lang/Integer.intValue:()I       121: istore_3       122: aload_0       123: getfield      #4                  // Field stack:Ljava/util/Stack;       126: invokevirtual #9                  // Method java/util/Stack.pop:()Ljava/lang/Object;       129: checkcast     #10                 // class java/lang/Integer       132: invokevirtual #11                 // Method java/lang/Integer.intValue:()I       135: istore        4       137: aload_0       138: iload         4       140: iload_3       141: isub       142: putfield      #12                 // Field result:I       145: aload_0       146: getfield      #4                  // Field stack:Ljava/util/Stack;       149: aload_0       150: getfield      #12                 // Field result:I       153: invokestatic  #13                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;       156: invokevirtual #14                 // Method java/util/Stack.push:(Ljava/lang/Object;)Ljava/lang/Object;       159: pop       160: goto          315       163: aload_1       164: iload_2       165: aaload       166: ldc           #16                 // String *       168: invokevirtual #8                  // Method java/lang/String.equals:(Ljava/lang/Object;)Z       171: ifeq          229       174: aload_0       175: getfield      #4                  // Field stack:Ljava/util/Stack;       178: invokevirtual #9                  // Method java/util/Stack.pop:()Ljava/lang/Object;       181: checkcast     #10                 // class java/lang/Integer       184: invokevirtual #11                 // Method java/lang/Integer.intValue:()I       187: istore_3       188: aload_0       189: getfield      #4                  // Field stack:Ljava/util/Stack;       192: invokevirtual #9                  // Method java/util/Stack.pop:()Ljava/lang/Object;       195: checkcast     #10                 // class java/lang/Integer       198: invokevirtual #11                 // Method java/lang/Integer.intValue:()I       201: istore        4       203: aload_0       204: iload_3       205: iload         4       207: imul       208: putfield      #12                 // Field result:I       211: aload_0       212: getfield      #4                  // Field stack:Ljava/util/Stack;       215: aload_0       216: getfield      #12                 // Field result:I       219: invokestatic  #13                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;       222: invokevirtual #14                 // Method java/util/Stack.push:(Ljava/lang/Object;)Ljava/lang/Object;       225: pop       226: goto          315       229: aload_1       230: iload_2       231: aaload       232: ldc           #17                 // String /       234: invokevirtual #8                  // Method java/lang/String.equals:(Ljava/lang/Object;)Z       237: ifeq          295       240: aload_0       241: getfield      #4                  // Field stack:Ljava/util/Stack;       244: invokevirtual #9                  // Method java/util/Stack.pop:()Ljava/lang/Object;       247: checkcast     #10                 // class java/lang/Integer       250: invokevirtual #11                 // Method java/lang/Integer.intValue:()I       253: istore_3       254: aload_0       255: getfield      #4                  // Field stack:Ljava/util/Stack;       258: invokevirtual #9                  // Method java/util/Stack.pop:()Ljava/lang/Object;       261: checkcast     #10                 // class java/lang/Integer       264: invokevirtual #11                 // Method java/lang/Integer.intValue:()I       267: istore        4       269: aload_0       270: iload         4       272: iload_3       273: idiv       274: putfield      #12                 // Field result:I       277: aload_0       278: getfield      #4                  // Field stack:Ljava/util/Stack;       281: aload_0       282: getfield      #12                 // Field result:I       285: invokestatic  #13                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;       288: invokevirtual #14                 // Method java/util/Stack.push:(Ljava/lang/Object;)Ljava/lang/Object;       291: pop       292: goto          315       295: aload_0       296: getfield      #4                  // Field stack:Ljava/util/Stack;       299: aload_1       300: iload_2       301: aaload       302: invokevirtual #18                 // Method java/lang/String.trim:()Ljava/lang/String;       305: invokestatic  #6                  // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I       308: invokestatic  #13                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;       311: invokevirtual #14                 // Method java/util/Stack.push:(Ljava/lang/Object;)Ljava/lang/Object;       314: pop       315: iinc          2, 1       318: goto          23       321: aload_0       322: getfield      #12                 // Field result:I       325: ireturn      LineNumberTable:        line 16: 0        line 17: 6        line 19: 21        line 20: 31        line 21: 42        line 22: 56        line 23: 71        line 24: 79        line 25: 94        line 26: 108        line 27: 122        line 28: 137        line 29: 145        line 30: 160        line 31: 174        line 32: 188        line 33: 203        line 34: 211        line 35: 226        line 36: 240        line 37: 254        line 38: 269        line 39: 277        line 40: 292        line 42: 295        line 19: 315        line 45: 321      StackMapTable: number_of_entries = 8        frame_type = 21 /* same */        frame_type = 252 /* append */          offset_delta = 1          locals = [ int ]        frame_type = 251 /* same_frame_extended */          offset_delta = 73        frame_type = 251 /* same_frame_extended */          offset_delta = 65        frame_type = 251 /* same_frame_extended */          offset_delta = 65        frame_type = 251 /* same_frame_extended */          offset_delta = 65        frame_type = 19 /* same */        frame_type = 250 /* chop */          offset_delta = 5  public static void main(java.lang.String[]);    descriptor: ([Ljava/lang/String;)V    flags: ACC_PUBLIC, ACC_STATIC    Code:      stack=4, locals=8, args_size=1         0: new           #19                 // class niukeWeb/evalRPN         3: dup         4: invokespecial #20                 // Method "<init>":()V         7: astore_1         8: iconst_5         9: anewarray     #21                 // class java/lang/String        12: dup        13: iconst_0        14: ldc           #22                 // String 2        16: aastore        17: dup        18: iconst_1        19: ldc           #23                 // String 1        21: aastore        22: dup        23: iconst_2        24: ldc           #7                  // String +        26: aastore        27: dup        28: iconst_3        29: ldc           #24                 // String 3        31: aastore        32: dup        33: iconst_4        34: ldc           #16                 // String *        36: aastore        37: astore_2        38: aload_1        39: aload_2        40: invokevirtual #25                 // Method evalRPN:([Ljava/lang/String;)I        43: istore_3        44: getstatic     #26                 // Field java/lang/System.out:Ljava/io/PrintStream;        47: iload_3        48: invokevirtual #27                 // Method java/io/PrintStream.println:(I)V        51: iconst_1        52: anewarray     #21                 // class java/lang/String        55: dup        56: iconst_0        57: ldc           #22                 // String 2        59: aastore        60: astore        4        62: aload_1        63: aload         4        65: invokevirtual #25                 // Method evalRPN:([Ljava/lang/String;)I        68: istore        5        70: getstatic     #26                 // Field java/lang/System.out:Ljava/io/PrintStream;        73: iload         5        75: invokevirtual #27                 // Method java/io/PrintStream.println:(I)V        78: iconst_3        79: anewarray     #21                 // class java/lang/String        82: dup        83: iconst_0        84: ldc           #28                 // String 0        86: aastore        87: dup        88: iconst_1        89: ldc           #24                 // String 3        91: aastore        92: dup        93: iconst_2        94: ldc           #17                 // String /        96: aastore        97: astore        6        99: aload_1       100: aload         6       102: invokevirtual #25                 // Method evalRPN:([Ljava/lang/String;)I       105: istore        7       107: getstatic     #26                 // Field java/lang/System.out:Ljava/io/PrintStream;       110: iload         7       112: invokevirtual #27                 // Method java/io/PrintStream.println:(I)V       115: return      LineNumberTable:        line 49: 0        line 50: 8        line 51: 38        line 52: 44        line 54: 51        line 55: 62        line 56: 70        line 58: 78        line 59: 99        line 60: 107        line 61: 115}SourceFile: "evalRPN.java"cxhdeMacBook-Air:niukeweb caoxiaohong$ 

到此,查看.class字节码的准备工作就做完了,通过分析字节码信息来分析.class文件中常量等信息。


6、补充:.class文件结构:

类文件{

  OxCAFEBABE,小版本号,大版本号,常量池大小,常量池数组,访问控制标记,当前类信息,父类信息,实现的接口个数,实现的接口信息数组,域个数,域信息数组,方法个数,方法信息数组,属性个数,属性信息数组

  }



阅读全文
0 0
原创粉丝点击