2
나는 ASM 4.0를 사용하여 클래스 이름을 변경하기 위해 노력하고있어 : ASM으로 클래스의 이름을 바꾸고 동일한 클래스 로더에 머물러있는 방법은 무엇입니까?
ClassReader reader = new ClassReader(
loader.getResourceAsStream("test/MyClass.class")
);
ClassWriter writer = new ClassWriter(reader, 0);
ClassVisitor visitor = new RemappingClassAdapter(visitor, new Remapper() { /* skipped */ });
reader.accept(visitor, 0);
return new ClassLoader() {
public Class<?> load(final String name, final byte[] bytes) {
return this.defineClass(name, bytes, 0, bytes.length);
}
}.load("test/MyClass", writer.toByteArray());
내가 의도적으로 이름을 변경 부분을 건너 뜁니다. 새로운 수업은 원래 수업의 정확한 사본이어야합니다. 그것은 그렇지만 더 이상 오래된 것으로 사용할 수 없습니다 :
java.lang.ClassCastException: test.MyClass cannot be cast to test.MyClass
동일한 클래스 로더에 머무는 방법은 무엇입니까?