java.lang.NoSuchMethodException

时间:2013-03-22 16:41:13

标签: java nosuchmethod

我目前正在编写一个Java应用程序,但是我被卡住了。

package framework.messages.requests;

import framework.sessions.Session;

public class Handshake {
    
    public static void CheckRevision(Session Session) {
        try {
            System.out.println("[" + Session.GetID() + "] --> " + Session.GetRequest().ReadUTF());
        }
        catch (Exception ex) {
            
        }
    }  
}

我的班级是什么。

如果我使用main(String[] args)

System.out.println(Handshake.class.getMethods()[0].getName());

输出是CheckRevision。

但如果我在其他地方使用:

this.Packets[6428] = Handshake.class.getMethod("CheckRevision");

我明白了:

Exception in thread "main" java.lang.NoSuchMethodException: framework.messages.requests.Handshake.CheckRevision()
    at java.lang.Class.getMethod(Unknown Source)
    at framework.messages.MessageHandler.AddPackets(MessageHandler.java:18)
    at framework.Framework.main(Framework.java:34)

为什么我没有得到好的方法?

1 个答案:

答案 0 :(得分:9)

如果只为方法名称提供getMethod方法,那么它将假设您正在寻找无参数方法。 getMethod方法对您正在寻找的方法的参数类有一个varargs参数。

使用

Handshake.class.getMethod("CheckRevision", Session.class);