嗯,不确定这个问题听起来有点奇怪,但让我试着澄清一下:
我有一个JSP页面。在这个JSP页面上,我正在调用我的项目中的一个包中定义的java类。该类连接数据库并访问一个具有字段的表 - functionname,function class。现在我能够在JSP中检索两个字符串,比如说 -
String funName = "ComFunctions";
String className = "funLog");
现在,我想使用这个类名来调用这个函数,例如类似于 - className.funName
在Java中有可能吗?实际上,这些函数和类名将在for循环中检索,因此我不能使用真实的类名直接调用,但必须使用字符串。
请建议是否存在方法或问题,或者问题是否仍然不清楚。
到目前为止我尝试了以下方法,但没有运气 -
Class c = Class.forName(className);
Object o = c.newInstance();
Method m = c.getMethod(funName, String.class); // Not sure what is supposed to be second parameter here i.e. after funName
错误 - 上面的代码给出了“No class found error”。我确保课程在课程下面。即使添加包名称,即packge.classname也没有帮助,它会为包名称显示“找不到符号”。
请指点什么?
我尝试调用的示例类 -
package mypackage;
public class ComFunctions extends WDriverInitialize{
public static void main(String[] args){
}
public static void funLog(String username){
System.out.println(userName);
}
}
答案 0 :(得分:1)
您需要确保编译的类位于webapp的类路径(即WEB-INF / classes)中并使用FQN(即添加包名称)。您还可以创建类的JAR文件,并将其添加到WEB-INF / lib文件夹中。
此外,getMethod中的额外参数是获取具有匹配参数的方法(例如,在您的示例中,采用String的方法
答案 1 :(得分:1)
你错过了一个难题,那就是方法论证。没有它,你无法确定funName
指的是什么方法,以及传递给它的参数。
当然,这个类需要在类路径中。