자바 클래스 파일을 읽기 위해 아파치 bcel 라이브러리를 사용하고 있습니다. 호출에서 제공된 메소드의 로컬 변수 이름을 식별 할 수 있습니다.아파치의 지역 변수 데이터 타입을 확인하십시오. 바이트 코드 공학 라이브러리 (bcel)
그러나 세부 정보에는 로컬 변수의 데이터 유형 관련 세부 정보가 포함되지 않습니다. 또한 변수 daat 유형을 얻는 다른 방법도 찾을 수 없었습니다. 약간의 도움을 주시면 감사하겠습니다.
자바 클래스 파일을 읽기 위해 아파치 bcel 라이브러리를 사용하고 있습니다. 호출에서 제공된 메소드의 로컬 변수 이름을 식별 할 수 있습니다.아파치의 지역 변수 데이터 타입을 확인하십시오. 바이트 코드 공학 라이브러리 (bcel)
그러나 세부 정보에는 로컬 변수의 데이터 유형 관련 세부 정보가 포함되지 않습니다. 또한 변수 daat 유형을 얻는 다른 방법도 찾을 수 없었습니다. 약간의 도움을 주시면 감사하겠습니다.
실제로 방법이 있습니다. method.getLocalVariableTable().getLocalVariableTable()
을 반복하여 지역 변수 서명을 얻을 수 있습니다. 서명이 있으면 org.apache.bcel.classfile.Utility
이라는 유틸리티 클래스가 있으며 변환 방법은 Utility.signatureToString(variableSignature)
입니다. 유틸리티 클래스의
자바 독 - https://commons.apache.org/proper/commonsbcel/apidocs/org/apache/bcel/classfile/Utility.html
이 클래스 파일이
public class ExampleClassFile {
public void testClass(int input){
int intVal= 0;
String stringVal= "randomText";
boolean booleanVal= false;
int []intArray = new int[2];
}
}
이
분석에 사용되는 예제 자바 파일 예제 코드 세그먼트게시는 BCEL 코드 위의 .class 파일을 분석하기 위해
JavaClass javaClass = Repository.lookupClass("ExampleClassFile");
for(Method method: javaClass.getMethods()){
for(LocalVariable localVariable: method.getLocalVariableTable().getLocalVariableTable()){
System.out.println(Utility.signatureToString(localVariable.getSignature()) + " " + localVariable.getName());
}
}
이 출력 결과
는
"로컬 변수의 타입 관련 세부" ? –
데이터 유형 관련 세부 정보 (문자열, 부울 값, 정수 등) –
이 값은 사용자를 충족시키는 경우 반영하여 액세스 할 수 있습니다. –