测试例子:
[code]
public class DaoAgent extends BaseDaoAgent{
public DaoAgent(){
this.initialize(TestDAO.class);
}
public static void main(String[] args){
DaoAgent agent=new DaoAgent();
}
[/code]
initialize是通过Reflect获得指定类所需方法存储到Hashtable
实现如下
[code]
protected void initialize(Class clazz) {
try {
if (ComDAO.class.isAssignableFrom(clazz)) {
Object instance = ReflectUtils.objectInstance(clazz);
Method[] methods = instance.getClass().getMethods();
for (int i = 0; i < methods.length; i++) {
if(ComOutput.class.isAssignableFrom(methods[i].getReturnType())){
daoMapping.put(methods[i].getName(), instance);
}
}
} else {
throw new SystemException("初始化异常,类{0}必须继承于ComDAO!",new String[]{clazz.getName()});
}
} catch (Exception e) {
throw new SystemException("初始化异常",e);
}
}
[/code]
TestDAO类
[code]
public class TestDAO extends ComDAO {
...
public ComOutput getShowNum() throws Exception{
....
}
...
[/code]
以上代码在Eclipse写的工具类,测试没问题,但在Jbuilder2006用该工具类测试有以下怪现状:
1)在Jbuilder开发环境测试出现java.lang.VerifyError
//Exception in thread "main" java.lang.VerifyError: (class: example/TestDAO, method: getShowNum signature: ()Lcom//util/ComOutput;) Incompatible object argument for function call
2)当getShowNum()方法直接return null;测试通过
2)自己在Eclipse测试的时候完全没问题
3)JDK版本也一致
郁闷,这个问题折腾了我一下午...
[code]
public class DaoAgent extends BaseDaoAgent{
public DaoAgent(){
this.initialize(TestDAO.class);
}
public static void main(String[] args){
DaoAgent agent=new DaoAgent();
}
[/code]
initialize是通过Reflect获得指定类所需方法存储到Hashtable
实现如下
[code]
protected void initialize(Class clazz) {
try {
if (ComDAO.class.isAssignableFrom(clazz)) {
Object instance = ReflectUtils.objectInstance(clazz);
Method[] methods = instance.getClass().getMethods();
for (int i = 0; i < methods.length; i++) {
if(ComOutput.class.isAssignableFrom(methods[i].getReturnType())){
daoMapping.put(methods[i].getName(), instance);
}
}
} else {
throw new SystemException("初始化异常,类{0}必须继承于ComDAO!",new String[]{clazz.getName()});
}
} catch (Exception e) {
throw new SystemException("初始化异常",e);
}
}
[/code]
TestDAO类
[code]
public class TestDAO extends ComDAO {
...
public ComOutput getShowNum() throws Exception{
....
}
...
[/code]
以上代码在Eclipse写的工具类,测试没问题,但在Jbuilder2006用该工具类测试有以下怪现状:
1)在Jbuilder开发环境测试出现java.lang.VerifyError
//Exception in thread "main" java.lang.VerifyError: (class: example/TestDAO, method: getShowNum signature: ()Lcom//util/ComOutput;) Incompatible object argument for function call
2)当getShowNum()方法直接return null;测试通过
2)自己在Eclipse测试的时候完全没问题
3)JDK版本也一致
郁闷,这个问题折腾了我一下午...