如下,是一些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