JAVA 역 컴 파일 도구:javap,jadclipse,jad.exe 및 jd-gui

12700 단어 공구 상자
1.jdk 자체 테이프 의 자바 p 사용 체험:먼저 자바 c*자바 를 실행 하여 소스 코드 를 생산 클 라 스(의존 관계 로 인해 하나의 자바 파일 컴 파일 이 잘못 되 었 을 수 있 습 니 다)를 컴 파일 합 니 다.cd 이 디 렉 터 리 에 있 는 자바 p-c 파일 이름(.class 접 두 사 를 가지 고 있 지 마 십시오)은 컴 파일 된 파일 의 내용 을 볼 수 있 습 니 다.유사 합 니 다.
public class design.method.proxyPattern.DynamicIntermediar extends java.lang.Object implements java.lang.reflect.InvocationHandler{
public design.method.proxyPattern.DynamicIntermediar();
  Code:
   0:   aload_0
   1:   invokespecial   #1; //Method java/lang/Object."":()V
   4:   return

public java.lang.Object getInstance(java.lang.Object)   throws java.lang.Exception;
  Code:
   0:   aload_0
   1:   aload_1
   2:   putfield        #2; //Field target:Ljava/lang/Object;
   5:   aload_1
   6:   invokevirtual   #3; //Method java/lang/Object.getClass:()Ljava/lang/Class;
   9:   astore_2
   10:  aload_2
   11:  invokevirtual   #4; //Method java/lang/Class.getClassLoader:()Ljava/lang/ClassLoader;
   14:  aload_2
   15:  invokevirtual   #5; //Method java/lang/Class.getInterfaces:()[Ljava/lang/Class;
   18:  aload_0
   19:  invokestatic    #6; //Method java/lang/reflect/Proxy.newProxyInstance:(Ljava/lang/ClassLoader;[Ljava/lang/Class;Ljava/lang/reflect/InvocationHandler;)Ljava/lang/Object;
   22:  areturn

public java.lang.Object invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[])   throws java.lang.Throwable;
  Code:
   0:   aload_0
   1:   invokespecial   #7; //Method before:()V
   4:   aload_2
   5:   aload_0
   6:   getfield        #2; //Field target:Ljava/lang/Object;
   9:   aload_3
   10:  invokevirtual   #8; //Method java/lang/reflect/Method.invoke:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
   13:  astore  4
   15:  aload_0
   16:  invokespecial   #9; //Method after:()V
   19:  aload   4
   21:  areturn

public static void main(java.lang.String[]);
  Code:
   0:   new     #14; //class design/method/proxyPattern/DynamicIntermediar
   3:   dup
   4:   invokespecial   #15; //Method "":()V
   7:   new     #16; //class design/method/proxyPattern/Customer
   10:  dup
   11:  invokespecial   #17; //Method design/method/proxyPattern/Customer."":()V
   14:  invokevirtual   #18; //Method getInstance:(Ljava/lang/Object;)Ljava/lang/Object;
   17:  checkcast       #19; //class design/method/proxyPattern/Person
   20:  astore_1
   21:  aload_1
   22:  invokeinterface #20,  1; //InterfaceMethod design/method/proxyPattern/Person.findHouse:()V
   27:  aload_1
   28:  invokeinterface #21,  1; //InterfaceMethod design/method/proxyPattern/Person.findCar:()V
   33:  aload_1
   34:  invokeinterface #22,  1; //InterfaceMethod design/method/proxyPattern/Person.findPartner:()V
   39:  goto    47
   42:  astore_1
   43:  aload_1
   44:  invokevirtual   #24; //Method java/lang/Exception.printStackTrace:()V
   47:  return
  Exception table:
   from   to  target type
     0    39    42   Class java/lang/Exception 
}

javap 역 컴 파일 을 사용 하 는 것 은 원본 코드 와 차이 가 있 지만 코드 작업 의 실질 에 더욱 가깝다.
2.jadclipse 역 컴 파일 플러그 인 eclipse 플러그 인 은 원본 코드 를 보기 편 하고 사용 하기 좋 습 니 다.
3.클 라 스 파일 을 IDEA 창 으로 끌 어 다 놓 고 보고 싶 은 클 라 스 파일 을 IDEA 로 끌 어 다 놓 으 면 원본 코드 를 볼 수 있 습 니 다.
4.jad.exe 다운로드 주소https://varaneckas.com/jad/다운로드 후 압축 을 풀 고 cd 는 jad.exe 디 렉 터 리 에 있 습 니 다.jad 가 파일 을 지정 하면 역 컴 파일 파일 파일 을 생 성 할 수 있 습 니 다.기본.jad 파일 도 지정 하고 자바 파일 을 직접 업로드 할 수 있 습 니 다.명령:jad-o-dtest 111-sjava 로 class 를 지정 합 니 다.d.파일 을 만 드 는 저장 경 로 를 지정 합 니 다.5.jd-gui 는 일반 압축 풀기 도구 와 차이 가 많 지 않 습 니 다.jar 가방 을 직접 열 고 jar 내 모든 class 파일 을 볼 수 있 습 니 다.이상 은 제 가 사용 한 역 컴 파일 방법 입 니 다.더 좋 은 방법 이 있 으 면 추 후 계속 보충 할 것 입 니 다.여러분 의 보충 도 환영 합 니 다.

좋은 웹페이지 즐겨찾기