別のクラスからメイン メソッドを呼び出そうとする方法が正しくありません。それが機能していない理由だと思います。もう1つのことは、質問があまり明確ではなく、コードからは、同じクラスのメインメソッドを呼び出そうとしているように見えることです。
しかし、私が理解している限り、2 つのプロジェクトがあり、最初のプロジェクトのメイン メソッドから 2 番目のプロジェクトのメイン メソッドを呼び出そうとしています。
以下は、機能を実現するためのコード スニペットです。
2番目のプロジェクトの主な方法(ライブラリになるもの)
public class second {
public static void main(String[] args) {
System.out.println("This statement comes from the main method in the jar .");
System.out.println("total params passed are: " + args.length);
for (String string : args) {
System.out.println("param is: " + string);
}
}
}
最初のプロジェクトのメイン メソッド(ライブラリのメイン メソッドを呼び出すもの)
public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException {
System.out.println("This statement is from main method in the program.");
/**
* This is the class name. and it needs to be correct.
* You do not need to mention project name or library name.
* newpackage is a package in my library and second is a class name in that package
*/
final Class _class = Class.forName("newpackage.second");
//here we mention which method we want to call
final Method main = _class.getMethod("main", String[].class);
//this are just parameters if you want to pass any
final String[] params = {"one", "two", "three"};
try {
//and finally invoke the method
main.invoke(null, (Object) params);
} catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException ex) {
Logger.getLogger(JavaApplication2.class.getName()).log(Level.SEVERE, null, ex);
}
以下は、ライブラリ プロジェクトを追加した後のプロジェクト構造の外観です。