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



尝试在代码中执行特定的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 和其他库的 URL,这些库是执行的 jar 运行所必需的。如果省略,第 3 行将引发异常。当方法到达第 4 行时,将抛出 java.lang.NoSuchMethodException。

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

那么可能是我的代码出了问题,还是 jar 文件导出方式的问题?有什么办法可以证明吗?导出的罐子来自 maven2 项目。

这可能会有所帮助:

loader = new URLClassLoader.newInstance(urls);

cls.getDeclaredMethod(methodName, Properties.class, 
                     StringBuffer.class, StringBuffer.class, IContext.class);

如果未找到匹配的方法,则引发NoSuchMethodException

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

最新更新