2013-10-22 88 views
0

我想開始一個main(String args [])方法,它包含在我必須使用的* .jar中(不要問,我已經厭倦了)。如何使用另一個jar中的args運行main方法?

//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 
    } 
} 

什麼是從我自己的類稱這樣的主要方法,最好是在一個單獨的線程的最佳方式?

回答

4
new Thread(new Runnable(){ 
    public void run(){ 
     MainApp.main(new String[]{"-port", 8080}); 
    } 
}).start(); 
1

您可以將.jar添加到您的類路徑,然後加載該類並調用靜態Main()方法。即:

String[] args = new String[] {"-port", "8080"}; 
MainApp.main(args); 
1

兩個這樣做的方法:

  1. 如果你不介意的過程中運行它,那麼你就可以運行它SomeJava.MainApp.main({」 -port「,」8080「})...這是提供的MainApp類正在尋找這種方式的參數。

  2. 如果您知道獲得通過運行該JAR的命令行參數,那麼你可以使用的Runtime.exec()執行它

希望有所幫助。

2

該類是否在另一個jar文件中是不相關的。只要包含clas的jar包在classpath中,就可以使用它。 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"}); 
    } 
} 

這不會調用另一個線程的主要收作方法初探(不知道爲什麼你想要的)。如果你想這樣做,然後創建一個線程,並從線程或Runnable的run()方法調用MainApp.main()

0

您可以嘗試使用Process類啓動jar應用程序。

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

strPath將會是你的jar文件的路徑。您可以將其包含在Thread類中以使其在單獨的線程中運行。

相關問題