런타임 바이트 코드 생성을위한 많은 libs (도구)가 있습니다. ASM, Javassit, CGLIB, BCEL. 이 모든 도구는 javac 컴파일러와 같은 도구와는 달리 자바 바이트 코드를 동적으로 조작 할 수 있습니다. 바이트 코드를 생성하고 나중에 클래스 로더에로드하는 것이 좋은 점을 알고 있습니다. 나에 대한 질문은 Java 메소드/클래스에 대해
는 the ASM FAQ에 따르면, 예를 들어, ASM 코드를 얻기 위해,이 같은 ASMifier 클래스를 사용해야합니다 java -classpath "asm.jar;asm-util.jar" org.objectweb.asm.util.ASMifier org/domain/package/YourClass.class
을하지만 그것은 나에게 오류 가져옵니다 Er
매개 변수 defineClass가 호출되어 있는지 확인하고 defineClass를 호출하기 전에 바이트 배열 매개 변수에 메서드를 변환하는 바이트 코드를 호출합니다. 그러나 각 매개 변수가 시작되는 위치를 식별 할 수 없지만 명확한 순서로되어 있습니다. 어떤 매개 변수가 시작되는지 알 수 있습니까? 여기 예는 나는 ASMifier //The first pa
는 말한다 : 공용 인터페이스 옵 코드 JVM이 옵 코드, 액세스 플래그 및 배열 유형 코드를 정의합니다. 이 인터페이스는 일부 opcode가 자동으로 처리되기 때문에 모든 JVM opcode 을 정의하지 않습니다. 예를 들어, 가능하면 xLOAD 및 xSTORE opcode가 xLOAD_n 및 xSTORE_n opcode로 자동 대체됩니다. xLOAD_n
나는 현재 다음과 같은 문제에 붙어있다가 포함되어 있습니다. 나는 단지 1 개의 스택 블록 정수로 작업하기 때문에 잘못된 레지스터가 그 레지스터에 얼마나 많은 영향을 미치는지 궁금합니다. 아래는 내 jasmin-java-bytecode이며, 잘 컴파일되지만 실행시 오류가 발생합니다. 을 .class 공공하여 HelloWorld .super 자바/랭/객체 .
ASM MethodVisitor을 사용하여 바이트 코드 변환을 원합니다. 그것은 다음과 같은 순서로 특정 방법 (그들이 주석으로 표시됩니다)를 호출 INVOKEINTERFACE 모든 지침을 대체 할 내 목표 : 그것은 아주 쉬운 일이 // instructions that put instance object on stack
INVOKESTATIC packa
ASM 프레임 워크에 익숙하지 않습니다. 나는이 ASM 프레임 워크를 일주일 동안 작업 해왔다. 클래스 파싱과 처음부터 .class 파일 생성에 관한 튜토리얼을 넷에서 보았습니다. 그러나 ASM에서 기존 클래스를 수정하는 방법을 수행 할 수 없습니다. 친절히 도와주세요. 은 ClassVisitor, ClassWriter 및 ClassReader 간의 실행
다음과 같은 코드를 작성하고 싶습니다. MyClass a = new @MyAnnotation MyClass()
어떤 사람이 주석 MyClass에의 목적을지지 그래서 public class MyClass {
int a;
public void setValue(int a) {
this.a = a;
}
}
, 그
나는 ASM와 함께 일하고 있으며 일부 필드 쓰기를 추적하기 위해 클래스 파일을 조작하려고합니다. putfield 및 putstatic 명령어는 ASM에서 FieldInsnNode 클래스의 인스턴스이며, 런타임시 Field 오브젝트를 생성하고이 Field 오브젝트를 인수로 사용하는 다른 메소드를 호출하는 코드를 주입하려고합니다. 나는 간단한 자바 소스 코드