문제

저는 Java 서비스와 다른 다양한 언어로 작성된 클라이언트간에 많은 원격 객체 전송을 수행하는 프로젝트를 진행하고 있습니다. 현재의 제약 조건을 감안할 때 기존 Java 클래스를 기반으로 코드를 생성하는 데 무엇이 필요한지 결정했습니다. 기본적으로 나는 가져 가야한다 .class 파일 (또는 그 모음)은 바이트 코드를 구문 분석하여 모든 데이터 멤버 및 getters/setter를 결정한 다음 다른 언어로 코드를 출력하여 동일한 구조의 클래스를 생성 할 수있는 것을 작성합니다.

JAD와 같은 표준 디 컴파일러를 찾고 있습니다. 나는 a를 가져갈 수 있어야한다 .class 데이터 멤버 및 메소드의 객체 모델을 파일하고 만듭니다. 이것이 전혀 가능합니까?

도움이 되었습니까?

해결책

나는 Bcel을 사용했고 정말 어색하다는 것을 알았습니다. ASM 훨씬 낫다. 그것은 매우 광범위하게 방문자를 사용하고 (약간 혼란 스러울 수 있음) 객체 모델을 생성하지 않습니다. 객체 모델을 생성하지 않으면 생성하려는 모델은 모든 데이터에 대한 문자 그대로 해석되지 않을 것입니다.

다른 팁

나는 과거에 Bcel을 사용했으며 사용하기가 매우 쉬웠습니다. 몇 년 전 이었으므로 지금은 더 나은 것이있을 수 있습니다.

아파치 자카르타 Bcel

당신의 설명에서, 그것은 들립니다 간단한 반사 충분할 것입니다. 클래스의 모든 정적 구조를 발견하고 특정 인스턴스의 필드에 액세스 할 수 있습니다.

메소드 지침을 번역하려는 경우 BCEL로만 이동합니다. (그리고 그것이 당신이 자동화하려는 것인지, 행운을 빕니다!)

아무도 언급하지 않았다는 사실에 충격을 받았습니다 ASM 아직. 돈이 살 수있는 최고의 바이트 코드 도서관입니다. 글쎄, 괜찮아요.

Jad 프로그래밍 방식 액세스를 허용하지 않는 Java 디 컴파일러입니다. 더 이상 쉽게 구할 수 없으며 아마도 Java7 바이트 코드가있는 새로운 프로젝트에는 효과가 없습니다.

Javassist도 당신을 도울 수 있다고 생각합니다.

http://www.jboss.org/javassist/

나는 그것을 사용할 필요가 없었지만, 시도해 보면 그것에 대한 의견을 알려 주시겠습니까?

비록 이는 .class 검사보다 바이트 코드 조작에 더 가깝다고 생각합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top