我想开始一个main(String args [])方法,该方法包含在我必须使用的* .jar中(不要问,我已经厌倦了)。
//this is my own class
class MyInitClass {
public static void main(String args[]) {
SomeJar.MainApp("-port", 8080);
}
}
//this is a keen developers class
class MainApp {
public static void main(String args[]) {
//makes use of the arguments, like starting a socket server
}
}
从我自己的类中调用这样一个main方法的最佳方法是什么,最好是在一个单独的Thread中?
答案 0 :(得分:4)
new Thread(new Runnable() {
public void run() {
MainApp.main(new String[] { "-port", "8080" });
}
}).start();
答案 1 :(得分:2)
该类是否在另一个jar文件中是无关紧要的。只要包含clas的jar在类路径中,就可以使用它。并且main
是一个静态方法,就像所有其他静态方法一样,因此,要调用它,您可以使用类的名称,后跟方法的名称。它将String数组作为参数,因此您需要将其传递给String数组。因此,假设MainApp
位于包com.foo.bar
中,您只需要
import com.foo.bar.MainApp;
class MyInitClass {
public static void main(String args[]) {
MainApp.main(new String[] {"-port", "8080"});
}
}
这不会在另一个线程中调用主要的methd(不确定为什么要这样)。如果你想这样做,那么创建一个线程并从线程或Runnable的MainApp.main()
方法中调用run()
。
答案 2 :(得分:1)
您可以将.jar添加到类路径中,然后只需加载该类并调用静态Main()方法。即:
String[] args = new String[] {"-port", "8080"};
MainApp.main(args);
答案 3 :(得分:1)
两种方式:
如果您不介意在进程中运行它,那么您可以将其作为SomeJava.MainApp.main({“ - port”,“8080”})运行... ...提供的MainApp类是以这种方式寻找争论。
如果您知道为运行该jar而传递的命令行参数,那么您可以使用Runtime.exec()
希望有所帮助。
答案 4 :(得分:0)
您可以尝试使用Process类启动jar应用程序。
strPath = "java -jar <path>"
Process proc = Runtime.getRuntime().exec(strPath);
strPath将是你的jar文件的路径。您可以将它包含在Thread类中,以使其在单独的线程中运行。