我在Java中动态创建类并尝试在其中调用方法,但是,有时候我会得到一个java.lang.reflect.InvocationTargetException.
PageGenerator1.java(动态创建)
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>");
}
}
Run Code Online (Sandbox Code Playgroud)
我试图像这样调用它:
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);
Run Code Online (Sandbox Code Playgroud)
这是我得到的日志条目:
信息:尝试
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}
我得到的例外没有消息,我没有反思等经验,所以我不确定错误是什么意思.你能帮我解释一下我做错了什么吗?
Kal*_*Kal 22
InovcationTargetException意味着您调用的方法引发了异常.要弄清楚你的方法本身有什么问题,请在try-catch块和日志周围包装invoke方法调用invocationTargetException.getTargetException().
我可以在generateMethod中看到你可能有错误的几个地方.Session可以为null,session.getCounter()被强制转换为Integer - 那里可能有classcastexception.
| 归档时间: |
|
| 查看次数: |
66300 次 |
| 最近记录: |