0

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

  }

%>

SEVERE: サーブレット 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. javax.servlet.http.HttpServlet.service(HttpServlet.java:717) の JspServlet.service(JspServlet.java:260) org.apache.catalina.core の ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) org.apache の.

4

3 に答える 3

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 アプリケーションを再度デプロイします。


<% ... %>コードに重大な問題があります。スクリプトレット ( jsps内の Java コード) を使用してはなりません。これに関する問題と解決策について、さらに説明があります。

于 2012-09-28T07:31:51.777 に答える
0

例外はこの行にスローされます

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

検証は参照ですか?オブジェクトへの参照である場合は、そのクラスのvalidatename()メソッドを確認してください。あなたのコードから、クラス名でvaludatename()を呼び出そうとしている参照ではないと言えます。これを試して:

  ArrayList<String> names=new Validation().validateuname(username,password);
于 2012-09-28T07:35:15.373 に答える
0
  1. validateunameメソッドが Validation クラスに存在することを確認してください。

  2. クラスをコンパイルし、サーバーの適切なプロジェクト ディレクトリに保存し ( Tomcatを使用しているようです)、サーバーを再起動したことを確認してください。新しいメソッドを宣言するたびに、サーバーを再起動する必要があることに注意してください。

于 2012-09-28T08:55:04.047 に答える