asm字节码操作框架的开发 本帖最后由 Mr_Caochong 于 2012-02-10 17:36:04 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我的构造函数写法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(); 我的构造函数写法,上面那个我贴错了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(); java.lang.NoClassDefFoundError: Edocument找不到这个类,如果你说Eclipse能运行的话。说明你没配置系统的classpath的环境变量。所以找不到这个类. 谢谢回复!不过我是在Eclipse不能运行,出现这个错误,所以不应该有ClassPath的问题! 问题已经找到两段代码的问题一:在申明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())); DataOutputStream 问题? dtree中checkbox问题 算法统计,在线等,急!!!!!!!!!!!!!!!! 分享:一道BT试题 新手问题..Swing表格... 一个程序,多个控制台 用java能不能写按键精灵啊 加班提问(郁闷中):如何将一个FORM中提交的3个表格分别保存在3个XML文件中,在线等待。。。 请问下面这个java语句段代表什么意思 大家快放弃java吧,请看! A知道B的ip和一个文件路径,怎么读取 数组的操作
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();
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();
谢谢回复!
不过我是在Eclipse不能运行,出现这个错误,所以不应该有ClassPath的问题!
两段代码的问题一:在申明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()));