import lsieun.utils.FileUtils;
import org.objectweb.asm.ClassWriter;
import static org.objectweb.asm.Opcodes.*;
public class HelloWorldGenerateCore {
public static void main(String[] args) throws Exception {
String relative_path = "sample/HelloWorld.class";
String filepath = FileUtils.getFilePath(relative_path);
// (1)
⽣
成
byte[]
内
容
byte[] bytes = dump();
// (2)
保
存
byte[]
到
⽂
件
FileUtils.writeBytes(filepath, bytes);
}
public static byte[] dump() throws Exception {
// (1)
创
建
ClassWriter
对
象
ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_FRAMES);
// (2)
调
⽤
visitXxx()
⽅
法
cw.visit(
V1_8, // version
ACC_PUBLIC + ACC_ABSTRACT + ACC_INTERFACE, // access
"sample/HelloWorld", // name
null, // signature
"java/lang/Object", // superName
null // interfaces
);
cw.visitEnd();
// (3)
调
⽤
toByteArray()
⽅
法
return cw.toByteArray();
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
public class HelloWorldRun {
public static void main(String[] args) throws Exception {
Class<?> clazz = Class.forName("sample.HelloWorld");
1
2
3
评论0
最新资源