【问题标题】:while calling java method in jsp page, it is showing servlet.service exception nosuchmethod在jsp页面中调用java方法时,显示servlet.service异常nosuchmethod
【发布时间】:2012-09-20 01:45:34
【问题描述】:

我在显示 servlet.service 异常 nosuch 方法异常或类的 jsp 页面中调用 java 方法

<%@page import="java.util.ArrayList"%>
<%@page import="Model.Validation"%>
<%
String username=request.getParameter("uname");
String password=request.getParameter("password");
System.out.print(username+"\nhellloo\n"+password+"\n re\n");
ArrayList<String> names=Validation.validateuname(username,password);
String name=(String)names.get(0);
String role=(String)names.get(1);
 if(role.equals("Administrator"))
 {
out.print("{success:true,errors:{reason:'Administrator'},uname:{name:'"+name+"'}}");

}else if(role.equals("User"))
 {
out.print("{success:true,errors:{reason:'User'}}");

}else
 {
 out.print("{success:false,errors:{reason:'User name or Password is wrong, please try              again'}}");

  }

%>

严重:servlet jsp 的 Servlet.service() 抛出异常 java.lang.NoSuchMethodError: Model.Validation.validateuname(Ljava/lang/String;Ljava/lang/String;)Ljava/util/ArrayList; 在 org.apache.jsp.check_005flogin_jsp._jspService(check_005flogin_jsp.java:61) 在 org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 在 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388) 在 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) 在 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) 在 org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) 在 org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602) 在 org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) 在 java.lang.Thread.run(Unknown Source)

【问题讨论】:

    标签: java jsp


    【解决方案1】:

    StackTrace 告诉你没有方法

    public class Validation {
        public static ArrayList<String> validateuname(String, String) {
            ArrayList<String> ls = new ArrayList<String>();
            //a nice implementation goes here!
            return ls; 
        }
    }
    

    检查这是否是一个有效的方法。如果您的方法正确,请重新编译您的代码并再次部署您的 Web 应用程序。


    你的代码有一个大问题,你不能使用scriptlet(你的jsps里面&lt;% ... %&gt;里面的Java代码)。关于这个问题和解决方案有进一步的解释:

    【讨论】:

    • 我已经声明了该方法,如果我正在运行 java 类,它就可以工作
    • @YarramReddy 发布您的Validation#validateuname 方法以检查任何错误。
    【解决方案2】:

    在这一行抛出异常

    ArrayList<String> names=Validation.validateuname(username,password);
    

    Validation 是一个引用吗?如果它是一个对象的引用,请检查该类中的 validatename() 方法。从您的代码中,我可以说它不是您尝试使用类名调用 valudatename() 的参考。 试试这个:

      ArrayList<String> names=new Validation().validateuname(username,password);
    

    【讨论】:

    • @YarramReddy 可以发布你的模型类。
    【解决方案3】:
    1. 确保您的方法 validateuname 存在于您的 Validation 类中。

    2. 确保您已编译该类,将其保存到服务器中正确的项目目录中(似乎您正在使用 Tomcat),并且您已重新启动服务器。请注意,在每个新方法声明中,您都需要重新启动服务器。

    【讨论】:

      猜你喜欢
      • 2011-01-28
      • 1970-01-01
      • 2021-09-02
      • 1970-01-01
      • 1970-01-01
      • 2013-03-19
      • 1970-01-01
      • 2017-03-20
      • 1970-01-01
      相关资源
      最近更新 更多