我在写从jsp页面传值进入Action中进行方法调用处理遇到了一个错误:
java.lang.reflect.InvocationTargetExceptionsun.reflect.NativeMethodAccessorImpl.invok...
java.lang.reflect.InvocationTargetException
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
.........
root cause
java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I
org.hibernate.hql.ast.HqlSqlWalker.generatePositionalParameter(HqlSqlWalker.java:896)
org.hibernate.hql.antlr.HqlSqlBaseWalker.parameter(HqlSqlBaseWalker.java:4819)
org.hibernate.hql.antlr.HqlSqlBaseWalker.expr(HqlSqlBaseWalker.java:1373)
org.hibernate.hql.antlr.HqlSqlBaseWalker.exprOrSubquery(HqlSqlBaseWalker.java:4243)
在Action中可以获取页面中传来的值,但是在调用方法的时候出错了。我定义的方法是:
public List searchByDeparture(String Departure) {
Session session = getSession();
Query query = session.createQuery("from AirInfo airInfo where airInfo.departure=?");//创建query对象
query.setString(0,Departure);
List list = query.list();//执行查询,获得结果
Iterator iterator = list.iterator();//遍历查询结果
while (iterator.hasNext()){
AirInfo airInfo = (AirInfo)iterator.next();
}
return list;
}
求大神帮忙 展开
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
.........
root cause
java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I
org.hibernate.hql.ast.HqlSqlWalker.generatePositionalParameter(HqlSqlWalker.java:896)
org.hibernate.hql.antlr.HqlSqlBaseWalker.parameter(HqlSqlBaseWalker.java:4819)
org.hibernate.hql.antlr.HqlSqlBaseWalker.expr(HqlSqlBaseWalker.java:1373)
org.hibernate.hql.antlr.HqlSqlBaseWalker.exprOrSubquery(HqlSqlBaseWalker.java:4243)
在Action中可以获取页面中传来的值,但是在调用方法的时候出错了。我定义的方法是:
public List searchByDeparture(String Departure) {
Session session = getSession();
Query query = session.createQuery("from AirInfo airInfo where airInfo.departure=?");//创建query对象
query.setString(0,Departure);
List list = query.list();//执行查询,获得结果
Iterator iterator = list.iterator();//遍历查询结果
while (iterator.hasNext()){
AirInfo airInfo = (AirInfo)iterator.next();
}
return list;
}
求大神帮忙 展开
2个回答
展开全部
字面可以看出,是反射调用方法时出现的异常。解决办法:1.需要调用的方法文件名称是否正确。2.查看要反射的方法所依赖的文件(序列化到硬盘的文件,jna或jni调用的dll等)是否真的包含这个方法,或文件对应程序的版本是否正确。3.序列化文件时编译器的JDK版本和调用序列化文件时JDK版本是否合适。一般情况:调用程序JDK版本>=编译序列化文件时的版本。4.如果是applet被js通过网页调用:可能会同时报出java.security.PrivilegedActionException错误。这个时候就需要考虑applet是否被给予了一些权限。可能是由于没有权利访问本地文件,从而造成方法反射调用错误的原因。目前想到这些,随时更新中........
追问
还是谢谢你。是hql问题,可是我不知道是什么原因:用第一个可以,第二个反而不行:
第一个:Query query = session.createQuery("from AirInfo airInfo where airInfo.departure='"+Departure+"'");
追答
不好意思 没帮到你
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询