如下,是一些java字节码也就是原始的class文件,当应用部署到线上之后,我们能够看到的也就是这样的字样了。那么怎样解呢?就让我们一起,来解读解读字节码吧!

 

Offset      0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F

00000000   CA FE BA BE 00 00 00 34  00 6A 0A 00 1C 00 39 0A   漱壕   4 j    9 
00000010   00 13 00 3A 09 00 13 00  3B 09 00 3C 00 3D 08 00      :    ;  < =  
00000020   3E 0A 00 3F 00 40 07 00  41 0A 00 07 00 39 09 00   >  ? @  A    9  
00000030   13 00 42 07 00 43 0A 00  0A 00 39 08 00 44 0A 00     B  C    9  D  
00000040   0A 00 45 0A 00 46 00 47  0A 00 0A 00 48 08 00 49     E  F G    H  I
00000050   0A 00 0A 00 4A 0B 00 4B  00 4C 07 00 4D 0A 00 13       J  K L  M   
00000060   00 39 0A 00 13 00 4E 07  00 4F 0A 00 16 00 39 08    9    N  O    9 
00000070   00 50 0A 00 16 00 51 0A  00 16 00 52 0A 00 16 00    P    Q    R    
00000080   53 07 00 54 01 00 0B 75  73 65 72 53 65 72 76 69   S  T   userServi
00000090   63 65 01 00 24 4C 63 6F  6D 2F 79 6F 75 67 65 2F   ce  $Lcom/youge/
000000A0   73 65 72 76 69 63 65 2F  75 73 65 72 2F 55 73 65   service/user/Use
000000B0   72 53 65 72 76 69 63 65  3B 01 00 09 69 6E 69 74   rService;   init
000000C0   69 61 6C 65 64 01 00 01  5A 01 00 06 3C 69 6E 69   ialed   Z   <ini
000000D0   74 3E 01 00 03 28 29 56  01 00 04 43 6F 64 65 01   t>   ()V   Code 

 

原始类源码如下:

package com.youge.api;

import com.youge.pojo.user.UserInfo;
import com.youge.service.user.UserService;
import com.youge.service.user.UserServiceImpl;

public class ByteCodeClassKen {

    private UserService userService;

    private boolean initialed;

    public ByteCodeClassKen() {
        init();
    }

    private void init() {
        if(!initialed) {
            System.out.println("init...");
            userService = new UserServiceImpl();
            initialed = true;
        }
    }

    public Integer addUser() throws Exception {
        UserInfo userInfo = new UserInfo();
        userInfo.setName("lilei");
        userInfo.setAge(12);
        userInfo.setAddress("new road.");
        return userService.addUser(userInfo);
    }

    public static void main(String[] args) throws Exception {
        // test
        ByteCodeClassKen classKen = new ByteCodeClassKen();
        Integer affect = classKen.addUser();
        System.out.println("affect: " + affect);
    }
}

完整字节码文件,如有兴趣请展开:

Offset      0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F

00000000   CA FE BA BE 00 00 00 34  00 6A 0A 00 1C 00 39 0A   漱壕   4 j    9 
00000010   00 13 00 3A 09 00 13 00  3B 09 00 3C 00 3D 08 00      :    ;  < =  
00000020   3E 0A 00 3F 00 40 07 00  41 0A 00 07 00 39 09 00   >  ? @  A    9  
00000030   13 00 42 07 00 43 0A 00  0A 00 39 08 00 44 0A 00     B  C    9  D  
00000040   0A 00 45 0A 00 46 00 47  0A 00 0A 00 48 08 00 49     E  F G    H  I
00000050   0A 00 0A 00 4A 0B 00 4B  00 4C 07 00 4D 0A 00 13       J  K L  M   
00000060   00 39 0A 00 13 00 4E 07  00 4F 0A 00 16 00 39 08    9    N  O    9 
00000070   00 50 0A 00 16 00 51 0A  00 16 00 52 0A 00 16 00    P    Q    R    
00000080   53 07 00 54 01 00 0B 75  73 65 72 53 65 72 76 69   S  T   userServi
00000090   63 65 01 00 24 4C 63 6F  6D 2F 79 6F 75 67 65 2F   ce  $Lcom/youge/
000000A0   73 65 72 76 69 63 65 2F  75 73 65 72 2F 55 73 65   service/user/Use
000000B0   72 53 65 72 76 69 63 65  3B 01 00 09 69 6E 69 74   rService;   init
000000C0   69 61 6C 65 64 01 00 01  5A 01 00 06 3C 69 6E 69   ialed   Z   <ini
000000D0   74 3E 01 00 03 28 29 56  01 00 04 43 6F 64 65 01   t>   ()V   Code 
000000E0   00 0F 4C 69 6E 65 4E 75  6D 62 65 72 54 61 62 6C     LineNumberTabl
000000F0   65 01 00 12 4C 6F 63 61  6C 56 61 72 69 61 62 6C   e   LocalVariabl
00000100   65 54 61 62 6C 65 01 00  04 74 68 69 73 01 00 20   eTable   this   
00000110   4C 63 6F 6D 2F 79 6F 75  67 65 2F 61 70 69 2F 42   Lcom/youge/api/B
00000120   79 74 65 43 6F 64 65 43  6C 61 73 73 4B 65 6E 3B   yteCodeClassKen;
00000130   01 00 04 69 6E 69 74 01  00 0D 53 74 61 63 6B 4D      init   StackM
00000140   61 70 54 61 62 6C 65 01  00 07 61 64 64 55 73 65   apTable   addUse
00000150   72 01 00 15 28 29 4C 6A  61 76 61 2F 6C 61 6E 67   r   ()Ljava/lang
00000160   2F 49 6E 74 65 67 65 72  3B 01 00 08 75 73 65 72   /Integer;   user
00000170   49 6E 66 6F 01 00 1E 4C  63 6F 6D 2F 79 6F 75 67   Info   Lcom/youg
00000180   65 2F 70 6F 6A 6F 2F 75  73 65 72 2F 55 73 65 72   e/pojo/user/User
00000190   49 6E 66 6F 3B 01 00 0A  45 78 63 65 70 74 69 6F   Info;   Exceptio
000001A0   6E 73 07 00 55 01 00 04  6D 61 69 6E 01 00 16 28   ns  U   main   (
000001B0   5B 4C 6A 61 76 61 2F 6C  61 6E 67 2F 53 74 72 69   [Ljava/lang/Stri
000001C0   6E 67 3B 29 56 01 00 04  61 72 67 73 01 00 13 5B   ng;)V   args   [
000001D0   4C 6A 61 76 61 2F 6C 61  6E 67 2F 53 74 72 69 6E   Ljava/lang/Strin
000001E0   67 3B 01 00 08 63 6C 61  73 73 4B 65 6E 01 00 06   g;   classKen   
000001F0   61 66 66 65 63 74 01 00  13 4C 6A 61 76 61 2F 6C   affect   Ljava/l
00000200   61 6E 67 2F 49 6E 74 65  67 65 72 3B 01 00 0A 53   ang/Integer;   S
00000210   6F 75 72 63 65 46 69 6C  65 01 00 15 42 79 74 65   ourceFile   Byte
00000220   43 6F 64 65 43 6C 61 73  73 4B 65 6E 2E 6A 61 76   CodeClassKen.jav
00000230   61 0C 00 21 00 22 0C 00  28 00 22 0C 00 1F 00 20   a  ! "  ( "     
00000240   07 00 56 0C 00 57 00 58  01 00 07 69 6E 69 74 2E     V  W X   init.
00000250   2E 2E 07 00 59 0C 00 5A  00 5B 01 00 26 63 6F 6D   ..  Y  Z [  &com
00000260   2F 79 6F 75 67 65 2F 73  65 72 76 69 63 65 2F 75   /youge/service/u
00000270   73 65 72 2F 55 73 65 72  53 65 72 76 69 63 65 49   ser/UserServiceI
00000280   6D 70 6C 0C 00 1D 00 1E  01 00 1C 63 6F 6D 2F 79   mpl        com/y
00000290   6F 75 67 65 2F 70 6F 6A  6F 2F 75 73 65 72 2F 55   ouge/pojo/user/U
000002A0   73 65 72 49 6E 66 6F 01  00 05 6C 69 6C 65 69 0C   serInfo   lilei 
000002B0   00 5C 00 5B 07 00 5D 0C  00 5E 00 5F 0C 00 60 00    \ [  ]  ^ _  ` 
000002C0   61 01 00 09 6E 65 77 20  72 6F 61 64 2E 0C 00 62   a   new road.  b
000002D0   00 5B 07 00 63 0C 00 2A  00 64 01 00 1E 63 6F 6D    [  c  * d   com
000002E0   2F 79 6F 75 67 65 2F 61  70 69 2F 42 79 74 65 43   /youge/api/ByteC
000002F0   6F 64 65 43 6C 61 73 73  4B 65 6E 0C 00 2A 00 2B   odeClassKen  * +
00000300   01 00 17 6A 61 76 61 2F  6C 61 6E 67 2F 53 74 72      java/lang/Str
00000310   69 6E 67 42 75 69 6C 64  65 72 01 00 08 61 66 66   ingBuilder   aff
00000320   65 63 74 3A 20 0C 00 65  00 66 0C 00 65 00 67 0C   ect:   e f  e g 
00000330   00 68 00 69 01 00 10 6A  61 76 61 2F 6C 61 6E 67    h i   java/lang
00000340   2F 4F 62 6A 65 63 74 01  00 13 6A 61 76 61 2F 6C   /Object   java/l
00000350   61 6E 67 2F 45 78 63 65  70 74 69 6F 6E 01 00 10   ang/Exception   
00000360   6A 61 76 61 2F 6C 61 6E  67 2F 53 79 73 74 65 6D   java/lang/System
00000370   01 00 03 6F 75 74 01 00  15 4C 6A 61 76 61 2F 69      out   Ljava/i
00000380   6F 2F 50 72 69 6E 74 53  74 72 65 61 6D 3B 01 00   o/PrintStream;  
00000390   13 6A 61 76 61 2F 69 6F  2F 50 72 69 6E 74 53 74    java/io/PrintSt
000003A0   72 65 61 6D 01 00 07 70  72 69 6E 74 6C 6E 01 00   ream   println  
000003B0   15 28 4C 6A 61 76 61 2F  6C 61 6E 67 2F 53 74 72    (Ljava/lang/Str
000003C0   69 6E 67 3B 29 56 01 00  07 73 65 74 4E 61 6D 65   ing;)V   setName
000003D0   01 00 11 6A 61 76 61 2F  6C 61 6E 67 2F 49 6E 74      java/lang/Int
000003E0   65 67 65 72 01 00 07 76  61 6C 75 65 4F 66 01 00   eger   valueOf  
000003F0   16 28 49 29 4C 6A 61 76  61 2F 6C 61 6E 67 2F 49    (I)Ljava/lang/I
00000400   6E 74 65 67 65 72 3B 01  00 06 73 65 74 41 67 65   nteger;   setAge
00000410   01 00 16 28 4C 6A 61 76  61 2F 6C 61 6E 67 2F 49      (Ljava/lang/I
00000420   6E 74 65 67 65 72 3B 29  56 01 00 0A 73 65 74 41   nteger;)V   setA
00000430   64 64 72 65 73 73 01 00  22 63 6F 6D 2F 79 6F 75   ddress  "com/you
00000440   67 65 2F 73 65 72 76 69  63 65 2F 75 73 65 72 2F   ge/service/user/
00000450   55 73 65 72 53 65 72 76  69 63 65 01 00 33 28 4C   UserService  3(L
00000460   63 6F 6D 2F 79 6F 75 67  65 2F 70 6F 6A 6F 2F 75   com/youge/pojo/u
00000470   73 65 72 2F 55 73 65 72  49 6E 66 6F 3B 29 4C 6A   ser/UserInfo;)Lj
00000480   61 76 61 2F 6C 61 6E 67  2F 49 6E 74 65 67 65 72   ava/lang/Integer
00000490   3B 01 00 06 61 70 70 65  6E 64 01 00 2D 28 4C 6A   ;   append  -(Lj
000004A0   61 76 61 2F 6C 61 6E 67  2F 53 74 72 69 6E 67 3B   ava/lang/String;
000004B0   29 4C 6A 61 76 61 2F 6C  61 6E 67 2F 53 74 72 69   )Ljava/lang/Stri
000004C0   6E 67 42 75 69 6C 64 65  72 3B 01 00 2D 28 4C 6A   ngBuilder;  -(Lj
000004D0   61 76 61 2F 6C 61 6E 67  2F 4F 62 6A 65 63 74 3B   ava/lang/Object;
000004E0   29 4C 6A 61 76 61 2F 6C  61 6E 67 2F 53 74 72 69   )Ljava/lang/Stri
000004F0   6E 67 42 75 69 6C 64 65  72 3B 01 00 08 74 6F 53   ngBuilder;   toS
00000500   74 72 69 6E 67 01 00 14  28 29 4C 6A 61 76 61 2F   tring   ()Ljava/
00000510   6C 61 6E 67 2F 53 74 72  69 6E 67 3B 00 21 00 13   lang/String; !  
00000520   00 1C 00 00 00 02 00 02  00 1D 00 1E 00 00 00 02                   
00000530   00 1F 00 20 00 00 00 04  00 01 00 21 00 22 00 01              ! "  
00000540   00 23 00 00 00 3B 00 01  00 01 00 00 00 09 2A B7    #   ;        *?
00000550   00 01 2A B7 00 02 B1 00  00 00 02 00 24 00 00 00     *? ?    $   
00000560   0E 00 03 00 00 00 12 00  04 00 13 00 08 00 14 00                   
00000570   25 00 00 00 0C 00 01 00  00 00 09 00 26 00 27 00   %           & ' 
00000580   00 00 02 00 28 00 22 00  01 00 23 00 00 00 63 00       ( "   #   c 
00000590   03 00 01 00 00 00 20 2A  B4 00 03 9A 00 1B B2 00          *? ? ?
000005A0   04 12 05 B6 00 06 2A BB  00 07 59 B7 00 08 B5 00      ? *? Y? ?
000005B0   09 2A 04 B5 00 03 B1 00  00 00 03 00 24 00 00 00    * ? ?    $   
000005C0   16 00 05 00 00 00 17 00  07 00 18 00 0F 00 19 00                   
000005D0   1A 00 1A 00 1F 00 1C 00  25 00 00 00 0C 00 01 00           %       
000005E0   00 00 20 00 26 00 27 00  00 00 29 00 00 00 03 00       & '   )     
000005F0   01 1F 00 01 00 2A 00 2B  00 02 00 23 00 00 00 6C        * +   #   l
00000600   00 02 00 02 00 00 00 28  BB 00 0A 59 B7 00 0B 4C          (? Y? L
00000610   2B 12 0C B6 00 0D 2B 10  0C B8 00 0E B6 00 0F 2B   +  ? +  ? ? +
00000620   12 10 B6 00 11 2A B4 00  09 2B B9 00 12 02 00 B0     ? *? +?   ?
00000630   00 00 00 02 00 24 00 00  00 16 00 05 00 00 00 1F        $          
00000640   00 08 00 20 00 0E 00 21  00 17 00 22 00 1D 00 23          !   "   #
00000650   00 25 00 00 00 16 00 02  00 00 00 28 00 26 00 27    %         ( & '
00000660   00 00 00 08 00 20 00 2C  00 2D 00 01 00 2E 00 00          , -   .  
00000670   00 04 00 01 00 2F 00 09  00 30 00 31 00 02 00 23        /   0 1   #
00000680   00 00 00 71 00 03 00 03  00 00 00 27 BB 00 13 59      q       '? Y
00000690   B7 00 14 4C 2B B6 00 15  4D B2 00 04 BB 00 16 59   ? L+? M? ? Y
000006A0   B7 00 17 12 18 B6 00 19  2C B6 00 1A B6 00 1B B6   ?   ? ,? ? ?
000006B0   00 06 B1 00 00 00 02 00  24 00 00 00 12 00 04 00     ?    $       
000006C0   00 00 28 00 08 00 29 00  0D 00 2A 00 26 00 2B 00     (   )   * & + 
000006D0   25 00 00 00 20 00 03 00  00 00 27 00 32 00 33 00   %         ' 2 3 
000006E0   00 00 08 00 1F 00 34 00  27 00 01 00 0D 00 1A 00         4 '       
000006F0   35 00 36 00 02 00 2E 00  00 00 04 00 01 00 2F 00   5 6   .       / 
00000700   01 00 37 00 00 00 02 00  38                          7     8
View Code

相关文章:

  • 2021-06-05
  • 2021-09-17
  • 2021-08-09
  • 2021-09-22
  • 2021-11-13
  • 2022-01-30
猜你喜欢
  • 2021-07-06
  • 2021-11-12
  • 2021-12-23
  • 2021-10-16
  • 2021-06-15
  • 2022-12-23
  • 2021-05-07
相关资源
相似解决方案