如何用另一个jar的args运行main方法?

时间:2013-10-22 08:28:46

标签: java multithreading

我想开始一个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中?

5 个答案:

答案 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)

两种方式:

  1. 如果您不介意在进程中运行它,那么您可以将其作为SomeJava.MainApp.main({“ - port”,“8080”})运行... ...提供的MainApp类是以这种方式寻找争论。

  2. 如果您知道为运行该jar而传递的命令行参数,那么您可以使用Runtime.exec()

  3. 执行它

    希望有所帮助。

答案 4 :(得分:0)

您可以尝试使用Process类启动jar应用程序。

strPath = "java -jar <path>"
Process proc = Runtime.getRuntime().exec(strPath);

strPath将是你的jar文件的路径。您可以将它包含在Thread类中,以使其在单独的线程中运行。