有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在jsp页面中调用java方法时,它显示的是servlet。服务异常nosuchmethod

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

<%@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'}}");

  }

%>

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


共 (3) 个答案

  1. # 1 楼答案

    例外情况是在这条线上抛出

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

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

      ArrayList<String> names=new Validation().validateuname(username,password);
    
  2. # 2 楼答案

    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(JSP中的<% ... %>中的Java代码)。关于这方面的问题和解决方案还有进一步的解释:

  3. # 3 楼答案

    1. 确保验证类中存在方法validateuname

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