Problem with java.lang.VerifyError
bspies May 18, 2005 7:44 PMHi all,
I'm working on code that dynamically parses input records based on XML configuration...I'm having a problem with a thrown java.lang.VerifyError from Class newInstance() after calling CtClass.toClass(). The error is this:
java.lang.VerifyError: (class: com/sbc/bac/load/cebav/account/DailyAccountLineBeanXCRS5011Record, method: parseLine signature: (Ljava/lang/String;)Ljava/lang/Object;) Register 3 contains wrong type
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
at java.lang.Class.getConstructor0(Unknown Source)
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at com.sbc.bac.load.records.DynamicFileParserFactory.generateDynamicRecord(DynamicFileParserFactory.java:110)
The Record interface that this class extends just defines 1 method:
public Object parseLine(String line);
There is an abstract 'glue class' that implements Record here--all this does
is have an empty parseLine() method, a getSeparator(), and two protected HashMap's. I am replacing the body of the parseLine() method with the code:
{
String curToken;
java.text.DateFormat df;
java.util.StringTokenizer st = new java.util.StringTokenizer($1, getSeparator());
com.sbc.bac.load.cebav.account.DailyAccountLineBean bean = (com.sbc.bac.load.cebav.account.DailyAccountLineBean)newBean();
if(!st.hasMoreTokens())
throw new com.sbc.bac.load.error.RecordException("Number of input records is less than configured records.");
curToken = st.nextToken();
curToken = curToken.trim();
if(!curToken.equals(""))
bean.setDivision(curToken);
//etc...
if((df = (java.text.DateFormat)dateCache.get("yyyyMMdd"))==null)
dateCache.put("yyyyMMdd", df = new java.text.SimpleDateFormat("yyyyMMdd"));
bean.setProcessDate(new java.sql.Date(df.parse(curToken).getTime()));
//etc...
}
Does anybody have an idea of what could be happening here? If I write out a class file from CtClass, then decompile it with JAD, the code compiles on Eclipse just fine.