2012-06-11 1 views
1

Java의 임의 코드베이스의 경우 기호와 유형 간의 USES 및 USED-BY 관계 테이블을 개념적으로 작성하려고합니다. 기호 표에는 필요한 정보가 있습니다. 그러나 프론트 엔드를 작성하는 것은 거대한 작업처럼 보이고 내 프로젝트를 더 큰 하위 프로젝트로 전환 할 위험이 있습니다. 이유는 없습니다. 바이트 코드, Java .class 파일에 형식과 참조를 확인할 수 있도록 각 클래스의 기호 테이블이 있어야합니다..class 파일의 심볼 테이블 액세스

내 질문은 - 내가 원하는 용도/USED-BY 테이블을 만들 수 있도록

어떻게 programmaticly class 파일의 집합 내부 심볼 테이블을 액세스 할 수 있습니까? 이미이 작업을 수행 한 사람이 있습니까 (물론 대답은 '예'입니다). 아직 라이브러리가 아닌 도구입니까?

답변

1

ASM bytecode manipulation framework을 살펴보십시오. 이 tutorial에는 바이트 코드로부터의 의존성 검색의 예가 있습니다. 좀 더 최근에 사용하면 크게 줄일 수는 있지만 RemappingClassAdapter을 도입했습니다.

+0

그래, 내가 ASM 바이트 코드 프레임 워크를 알고 있고 아마 그것을 사용하게 될 것이지만, 내 질문은, 당신이 그것을 사용하는 방법에 대해 쓰여진 많은 많은 논문을 알게되는지, 그 중 일부는 사이트에서 사용 가능하다는 것이다. , 만약이 바이트 코드 테이블에서 정보를 추출하는 커버가 있다면? 또는 내가하고 싶은 일을하는 더 좋은 방법이 있습니까? TIA –

+0

내 오래된 튜토리얼은 종속 클래스의 추출을 다룬다. 나는 나의 대답에 대한 링크를 추가했다. "심볼 테이블"(실제로 상수 풀이라고 함)의 문제점은 컨텍스트를 벗어 났기 때문에 상수가 어디에서 사용되고 무엇이 사용되는지 알 수 없다는 것입니다. –

0

바이트 코드는 javap으로 지정할 수 있습니다. 그 후에는 텍스트 파싱 만 가능합니다.