本帖最后由 Mr_Caochong 于 2012-02-10 17:36:04 编辑

解决方案 »

  1.   

    我的构造函数写法MethodVisitor mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null);
    mv.visitCode();
    Label l0 = new Label();
    mv.visitLabel(l0);
    mv.visitLineNumber(9, l0);
    mv.visitVarInsn(ALOAD, 0);
    mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V");
    mv.visitInsn(RETURN);
    Label l1 = new Label();
    mv.visitLabel(l1);
    mv.visitLocalVariable("this", "L"+classInfo.getPackageName()+"/"+classInfo.getClassName()+";", null, l0, l1, 0);
    mv.visitMaxs(1, 1);
    mv.visitEnd();
      

  2.   

    我的构造函数写法,上面那个我贴错了
    MethodVisitor mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null);
    mv.visitCode();
    Label l0 = new Label();
    mv.visitLabel(l0);
    mv.visitLineNumber(9, l0);
    mv.visitVarInsn(ALOAD, 0);
    mv.visitMethodInsn(INVOKESPECIAL, "com/gwinsoft/gwinoa/entity/IEntity", "<init>", "()V");
    mv.visitInsn(RETURN);
    Label l1 = new Label();
    mv.visitLabel(l1);
    mv.visitLocalVariable("this", "L"+classInfo.getPackageName()+"/"+classInfo.getClassName()+";", null, l0, l1, 0);
    mv.visitMaxs(1, 1);
    mv.visitEnd();
      

  3.   

    java.lang.NoClassDefFoundError: Edocument找不到这个类,如果你说Eclipse能运行的话。说明你没配置系统的classpath的环境变量。所以找不到这个类.
      

  4.   


    谢谢回复!
    不过我是在Eclipse不能运行,出现这个错误,所以不应该有ClassPath的问题!
      

  5.   

    问题已经找到
    两段代码的问题一:在申明Class信息时,指定extends父类,传参数错误,应该在第五个参数写父类,应该如下//申明类名 以及 访问修饰符
    cw.visit(V1_5, ACC_PUBLIC + ACC_SUPER, classInfo.getPackageName()+"/"+classInfo.getClassName(),  null, "com/gwinsoft/gwinoa/entity/IEntity", null);

    二:生成 get set方法时 未指定类的包名,应该如下mv1.visitFieldInsn(GETFIELD, classInfo.getPackageName()+"/"+classInfo.getClassName(), fi.getFieldName(), getFieldTypeByWordCode(fi.getFieldType()));