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)
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)
楼主【dongchunguo】截止到2008-06-26 17:58:33的历史汇总数据(不包括此帖):
发帖数:4 发帖分:380
结贴数:4 结贴分:380
未结数:0 未结分:0
结贴率:100.00% 结分率:100.00%
敬礼!
仔细检查一下输入类型
当“校验器”检测到一个类文件虽然格式正确,但包含着一些内部不一致性或安全性问题时,抛出该错误。
摘自 JDK API 文档。
是说当“校验器”检测到一个类文件虽然格式正确,但包含着一些内部不一致性或安全性问题时,抛出该错误。
其他的看不出来
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();
}