使用javassist创建一个类出现了javassist.CannotCompileException这个异常

1.看的尚学堂的java300集敲代码报错在网上找很久没找到答案
2.下面是代码
public class JavassistTest01 {
/**

  • 测试使用javassist生成一个新的类
  • @param args
  • @throws CannotCompileException
  • @throws NotFoundException
    */
    public static void main(String[] args) throws Exception {
    ClassPool pool=ClassPool.getDefault();
    CtClass cc=pool.makeClass("home04.Emp");

    //创建属性
    CtField f1=CtField.make("private int empno", cc);
    CtField f2=CtField.make("private String ename", cc);
    cc.addField(f1);
    cc.addField(f2);
    
    cc.writeFile("c:/MyJava");//将构造好的类写入到工作空间下
    System.out.println("生成类成功!");
    

    }

}
3.下面是报错信息
Exception in thread "main" javassist.CannotCompileException: [source error] syntax error near " int empno"
at javassist.CtField.make(CtField.java:173)
at home04.JavassistTest01.main(JavassistTest01.java:23)
Caused by: compile error: syntax error near " int empno"
at javassist.compiler.Parser.parseField(Parser.java:111)
at javassist.compiler.Parser.parseMember1(Parser.java:87)
at javassist.compiler.Javac.compile(Javac.java:98)
at javassist.CtField.make(CtField.java:168)
... 1 more

第一次提问,希望有人看到解答

@calvinly
谢谢,解决了,body里少了个;

CtMethod sayHello = CtNewMethod.make(CtClass.voidType, "sayHello",
                new CtClass[]{classPool.get(String.class.getName())},
                new CtClass[0],
                "{System.out.println(\"Hello World\"+$1);}",
                ctClass);
        ctClass.addMethod(sayHello);

报错信息

Exception in thread "main" javassist.CannotCompileException: [source error] ; is missing

哈哈,本来我是也遇到这个问题,来找答案的,结果没找到,还碰到你在问。
不过我最后自己解决了,你的属性定义语句忘了加分号;
应该是这样:
CtField f1=CtField.make("private int empno ; ", cc);
CtField f2=CtField.make("private String ename ; ", cc);
ps:分号前后的空格不要哈,是为了让你看的明显一点