【发布时间】:2014-09-18 12:00:51
【问题描述】:
我有一个简单的Start 类和public Start(String[] params) 构造函数,我从其他正在运行的Java 程序级别的不可运行的JAR 文件中调用它。一切都在运行时环境中工作。当我尝试调用 newInstance() 方法以调用此 Start 类时,就会出现问题。
Start 类看起来像这样:
public class Start {
public Start(String[] params) {
/* initialize MainStage object */
MainStage stage = new MainStage(params);
stage.show();
// MainStage DO NOT have any restriction about params.length
}
}
我就是这样称呼Start类的:
String[] t = new String[] {"One", "Two", "Three"};
try {
Class<?> clazz = Class.forName("org.plugin.Start");
/* line below throws the mentioned exception */
clazz.getDeclaredConstructor(String[].class).newInstance((Object[]) t);
} catch (Exception e) {
e.printStackTrace();
}
值得一提的是,除了 IllegalArgumentException 之外的所有内容都非常完美,这意味着 - JAR 被添加到运行时类路径中,当类 Start 在其构造函数中没有参数时,它可以毫无问题地调用。
【问题讨论】: