2010-08-03 149 views
0

我想要一個接一個地編譯和執行一組java程序。用於編譯和執行Java程序的Java代碼

請給我一些關於如何執行任務的示例程序來幫助我。

請指教...

+0

對於此任務,最好使用腳本語言(bash或perl或...)。 – KLee1 2010-08-03 19:02:08

+1

我希望這隻能在Java中完成... – LGAP 2010-08-03 19:02:52

+1

對不起,但你要重申你是一個絕對的Java新手,你還想編寫一個Java程序來編譯和運行其他Java程序? 從「Hello Worlds」開始學習語言開始,然後學習如何執行命令行工具並將其應用於編譯和運行自己的程序的方式,不是更好嗎? – Mirvnillith 2010-08-03 19:29:04

回答

3

不能你打電話給你的主要方法裏面的其他程序的main()方法? 實施例:

ClassB { 
    public static void main(String[] args) { 
     System.out.println("ClassB main() Called"); 
    } 
} 

ClassA { 
    public static void main(String[] args) { 
     System.out.println("ClassA main() Called"); 
     ClassB.main(args); 
    } 
} 

的輸出將是

ClassA main() Called 
ClassB main() Called 
+0

不錯的想法..但它會工作嗎? – LGAP 2010-08-03 19:06:28

+0

應該一般工作。我不確定你的要求和情況。試試看,這很簡單。 – 2010-08-03 19:09:15

+0

它確實假設其他Java文件已經被編譯。 – Abboq 2010-08-03 19:09:18

4

嘗試使用Ant

documentation應該回答你的問題。

了HelloWorld應用程序可以發現here

+0

如何使用Ant ... 在Java中是一個初學者..我試着下載Ant,但它沒有爲我工作。 – LGAP 2010-08-03 19:03:39

+0

@Anad我建議你創建一個問題「如何運行絕對0的螞蟻」或類似的東西,它很容易構建和運行一組文件使用螞蟻 – OscarRyz 2010-08-03 19:09:10

1

當我不得不這樣做我創建我跑了perl腳本。在腳本中,我使用系統調用來執行java程序(一個接一個地執行)。我也能夠改變程序之間的目錄。

0

Runtime.getRuntime().exec("javac.exe");

傳遞.java文件(一個或多個)進行編譯。

Runtime.getRuntime().exec("java.exe");

傳遞類名稱來執行。

+0

'.exe'?現在所有的世界都是Windows嗎? – asveikau 2010-08-03 19:25:13

+0

@asveikau這是一個例子。我幾乎添加了一個說明,確切的文件名和路徑將是必要的,但最想要自己收集。顯然,我錯了。 – Abboq 2010-08-04 20:37:21

0

你可以使用ant

舉例來說,如果你有在目錄src

src/Hello.java 
src/Hola.java 

兩個Java文件中使用此構建文件編譯和運行它們:

<project default="compile"> 
     <!-- compile everything inside the "src" directory --> 
    <target name="compile"> 
     <javac srcdir="src" destdir="classes" /> 
    </target> 

     <!-- run the program named "Hello" followed by the program "Hola" --> 
    <target name="run" depends="compile"> 
     <java classname="Hello" classpath="classes" /> 
     <java classname="Hello" classpath="classes" /> 
    </target> 
</project> 

將內容保存在build.xml中,然後鍵入antant run

$ ant run 
Buildfile: build.xml 

compile: 
    [javac] Compiling 2 source files to /Users/oscarryz/Oscar/code/languages/Java/useAnt/classes 

run: 
    [java] Hello 
    [java] Hello 

BUILD SUCCESSFUL 
Total time: 0 seconds 

要在系統中安裝的螞蟻installing antthis

0

所以基本上你需要的是一個構建系統,類似於通用編程廠名和Makefile組合。構建系統通常是一個解析文件的程序,該文件描述構建系統生成可執行文件需要執行的操作。但像往常一樣,可能會發生更多事情(您可以執行編譯的文件,生成文檔等)。

因此,在OscarRyz上面的例子中,ant項目文件定義了文件所在的源目錄,並且在編譯之後運行該目錄中的文件。 javac標記和java標記。

關於螞蟻的好處是,它也是用java編寫的,所以你真的不需要做其他任何事情。螞蟻的文檔非常好,帶有例子,值得一讀。

我認爲這不值得,特別是如果你是初學者開始使用奇怪的運行時構造或直接用javac修補(除非你有大量的時間可用,我們通常不會)。