首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java: InvocationTargetException

Java: InvocationTargetException
EN

Stack Overflow用户
提问于 2011-06-17 15:24:32
回答 3查看 81.9K关注 0票数 13

我正在动态地创建Java类,并试图在其中调用方法,但是,有时我会得到一个java.lang.reflect.InvocationTargetException

PageGenerator1.java (动态创建)

代码语言:javascript
复制
import java.io.PrintStream;
import java.util.Map;
public class PageGenerator1 implements DynamicPageGenerator {
    public PageGenerator1() {
    }

    @Override
    public void generate(PrintStream out, Map<String,String> params, Session session) {
        out.print("<html>\r\n<body>\r\n");
        if (session.get("counter") == null) {
                session.set("counter", 2);
                out.println("<h1>Hi "+params.get("name")+" this is your first visit</h1>");
        } else {
                out.println("<h1>This is your "+session.get("counter")+" visit</h1>");
                session.set("counter", 1+((Integer)session.get("counter")));
        }
        out.print("\r\n</body>\r\n</html>");
    }
}

我试图像这样调用它:

代码语言:javascript
复制
    logger.info(
        "Attempting to invoke the method " + generateMethod + " with an instance of " + generatedClassName + "with the following parameters:\n" +
            "\tparams: " + params + "\n" +
            "\tcookieSession: " + cookiesSession
    );

    generateMethod.invoke(Class.forName(generatedClassName).newInstance(), ps, params, cookiesSession);

这是我得到的日志条目:

信息:尝试调用方法

public void cs236369.webserver.requesthandlers.tsp.PageGenerator1.generate(java.io.PrintStream,java.util.Map,cs236369.webserver.requesthandlers.tsp.Session)

有一个实例

cs236369.webserver.requesthandlers.tsp.PageGenerator1

具有以下参数:

params:{name=Amir}

cookieSession:{counter=5}

我得到的例外没有消息,也没有反射的经验等等,所以我不知道这个错误意味着什么。你能解释一下我做错了什么吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-06-17 15:56:32

InovcationTargetException意味着您调用的方法抛出了一个异常。要找出方法本身的问题所在,请将调用方法调用包装在一个try-catch块周围,并记录invocationTargetException.getTargetException()

我可以在您的generateMethod中看到几个可能有错误的地方。会话可能为null,session.getCounter()正被转换为Integer --那里可能有一个cast异常。

票数 26
EN

Stack Overflow用户

发布于 2011-06-17 16:35:45

在调用代码和生成块中放置try catch块。此外,还可以在调试器中逐步执行这些方法。

票数 0
EN

Stack Overflow用户

发布于 2017-06-17 19:19:49

这可能是因为参数错误。首先,检查您的参数。使用e.getCause().getCause()获取这一事件背后的实际原因。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6388051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档