java.lang.NoSuchMethodException在代码中执行jar时

时间:2014-02-27 09:24:21

标签: java jar maven-2 classloader

我在尝试在代码中执行特定的jar文件时遇到了问题。我的目标是创建GUI应用程序(向导),其中用户选择各种xml文件,选择要执行的jar文件并为其提供输入xml。

要执行jar,我使用以下代码: 1: URL[] urls = fillUrls(); 2: loader = new URLClassLoader(urls); 3: Class<?> cls = loader.loadClass(className); 4: Method execute = cls.getDeclaredMethod(methodName, Properties.class, StringBuffer.class, StringBuffer.class, IContext.class); // method name is declared as: // private final String methodName = "execute";

第1行的方法 fillUrls 返回执行的jar和执行jar运行所需的其他库的URL。如果省略,第3行将抛出异常。当方法到达第4行时,抛出java.lang.NoSuchMethodException。

奇怪的是,jar中执行的类实现了一个接口,因此不可能没有这样的方法。为了使它更有趣,我用于测试的jar文件运行完美,其他人提供的罐子不...

我的代码可能有问题,或者问题是如何导出jar文件?有没有办法证明这一点?导出的jar来自maven2项目。

2 个答案:

答案 0 :(得分:1)

这可能会有所帮助:

loader = new URLClassLoader.newInstance(urls);

答案 1 :(得分:0)

cls.getDeclaredMethod(methodName, Properties.class, 
                     StringBuffer.class, StringBuffer.class, IContext.class);
如果找不到匹配的方法,则

抛出NoSuchMethodException

Class(您提供的类名)中没有这样的方法,具有给定的方法名称和方法的形式参数类型 (Properties.class,StringBuffer.class, StringBuffer.class, IContext.class)按声明的顺序。