我在尝试在代码中执行特定的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项目。
答案 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)
按声明的顺序。