Exception in thread "main" java.lang.VerifyError: (class: cfchina/test/PersonalCreditCardAttributes, method: process signature: (Lorg/w3c/dom/Document;)V) Register 17 contains wrong type
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2357)
at java.lang.Class.getConstructor0(Class.java:2671)
at java.lang.Class.newInstance0(Class.java:321)
at java.lang.Class.newInstance(Class.java:303)
at cfchina.test.ExecScript.getExtraVarExecClass(ExecScript.java:110)
at cfchina.test.ExecScript.execScriptTest(ExecScript.java:82)
at cfchina.test.JavassistTest.main(JavassistTest.java:22)

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【dongchunguo】截止到2008-06-26 17:58:33的历史汇总数据(不包括此帖):
    发帖数:4                  发帖分:380                
    结贴数:4                  结贴分:380                
    未结数:0                  未结分:0                  
    结贴率:100.00%            结分率:100.00%            
    敬礼!
      

  2.   

    cfchina/test/PersonalCreditCardAttributes, method: process signature: (Lorg/w3c/dom/Document;)V) Register 17 contains wrong type 似乎是你的xml的问题
      

  3.   

    好像是反射系统(reflection)的错,具体的含义不清楚,一个单词可以说明一下:process signature 指的是一个方法的参数列表以及各个参数的类型看起来像是使用反射调用方法,提供的参数列表(varags)的类型与方法的定义不符。仅仅是猜测。:)java tutorial说反射功能不好测试,如能看到源码,尝试改成将反射代码改写为标准代码,出错就容易解决了。个人感觉,使用java反射写程序,就像是c语言中,可以使用整形标量是,非要使用到整形标量的指针一样。
      

  4.   

    contains wrong type ,包含错误的类型
    仔细检查一下输入类型
      

  5.   

    我的判断是你有重复的jar或者不兼容的jar,删掉重复的。 清理一下看看!
      

  6.   

    java.lang.VerifyError
    当“校验器”检测到一个类文件虽然格式正确,但包含着一些内部不一致性或安全性问题时,抛出该错误。
    摘自 JDK API 文档。
      

  7.   

    JavassistTest.java把这个代码贴出来
      

  8.   

    好像没用到XML,我是用javassit编译代码的时候出错
      

  9.   

    用的 Javassist ?代码贴出来瞧瞧。
      

  10.   

    java.lang.VerifyError 
    是说当“校验器”检测到一个类文件虽然格式正确,但包含着一些内部不一致性或安全性问题时,抛出该错误。 
    其他的看不出来
      

  11.   

    String script = "";
    try {
    FileReader reader = new FileReader(
    "E:\\workspace\\Test001\\script\\JAVASCRIPT.txt");
    BufferedReader br = new BufferedReader(reader);
    String s1 = null;
    while ((s1 = br.readLine()) != null) {
    script += s1 + "\n";
    } br.close();
    reader.close();
    br = null;
    reader = null;
    } catch (Exception e) {
    e.printStackTrace();
    } ClassA classA = null;
    classA = getExtraVarExecClass(script);
    classA.process(doc);这个方法getExtraVarExecClass(script)的代码如下:
    try {
    // 获取执行脚本 if (this.isClassInit == false) {
    ClassPool pool = ClassPool.getDefault();
    pool.insertClassPath(new ClassClassPath(this.getClass())); // 非静态方法中可以
    pool.importPackage("java.util");
    pool.importPackage("org.w3c.dom");
    pool.importPackage("test");
    CtClass cc = pool
    .get("test.CassA");
    CtMethod m = cc.getDeclaredMethod("process");
    m.setBody("{ " + script + " }");
    Class c = cc.toClass();
    classA = (ClassA) c.newInstance();
    this.isClassInit = true;
    } else {
    classA = new ClassA();
    }
    } catch (Exception e) {
    e.printStackTrace();
    }
      

  12.   

    此问题为java编译器编译的过程问题,目前已经解决,谢谢各位!