-1

好吧,不确定这个问题是否听起来有点奇怪,但让我试着澄清一下:

我有一个 JSP 页面。在这个 JSP 页面上,我正在调用在我的项目下的一个包中定义的 java 类。此类连接到数据库并访问具有字段的表 - 函数名,函数类。现在我可以在我的 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

错误 - 上面的代码给出“没有找到类错误”。我确保该类在包下。即使添加包名,即 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);


    }



}
4

2 回答 2

1

您需要确保已编译的类在 webapp 的类路径中(即 WEB-INF/classes)并使用 FQN(即添加包名)。您还可以制作您的类的 JAR 文件并将其添加到 WEB-INF/lib 文件夹。

此外, getMethod 中的额外参数是获取具有匹配参数的方法(即,在您的示例中,采用 String

于 2013-04-29T17:17:50.247 回答
1

你错过了一个难题,那就是方法参数。没有它,您将无法确定所指funName的是什么方法,以及要传递给它的参数。

当然,该类需要在类路径中。

于 2013-04-29T17:18:25.060 回答