2013-05-06 54 views
0

我目前有兩個主要方法的eclipse項目,並想知道是否有可能創建一個jar文件,該jar文件在jar文件時運行Apache Ant腳本被執行。我在下面提供了一個Ant腳本,其中運行了兩個主要方法。提前致謝。如何用Ant腳本創建一個jar文件來啓動程序

<?xml version="1.0"?> 
     <project name="Test" default="run_external"> 
     <target name="compile"> 
      <delete dir="bin" /> 
      <mkdir dir="bin" /> 
      <javac srcdir="src" destdir="bin" /> 
     </target> 
     <target name="run_external" depends="compile"> 
      <parallel> 
       <exec executable="cmd" dir="bin"> 
        <arg value="/c start cmd.exe /k java test.Main" /> 
       </exec> 
       <exec executable="cmd" dir="bin"> 
        <arg value="/c start cmd.exe /k java test.Main2" /> 
       </exec> 
      </parallel> 
     </target> 
    </project> 
+0

java -jar helloworld.jar 

輸出什麼是你想實現,究竟? – 2013-05-06 14:57:58

+0

當我運行jar文件,所以java -jar文件。jar,我想用jar來運行螞蟻腳本,它啓動原始文章中指定的兩個主要方法 – user1087943 2013-05-06 14:59:37

+0

爲什麼不創建可執行的jar文件,然後調用類文件的主要方法,而不是調用ant腳本執行這些方法。如果你需要,我可以提供你的例子 – NullPointerException 2013-05-06 15:08:30

回答

0

爲什麼你需要Ant?從評論中我推斷出你希望你的Java程序啓動另一個。如果是這樣,只需使用:

Runtime.getRuntime().exec("java -jar otherprogram.jar"); 

或任何命令行是。請注意,有更高級的Runtime.getRuntime().exec()版本,所以看看javadoc。

編輯:從Runtime.getRuntime().exec()文檔:

執行在一個單獨過程中的指定的字符串命令。

所以你正在產卵另一個獨立的JVM。

不要直接使用java ...,而是使用環境變量編寫命令:這僅用於演示函數。

無論如何,如果你需要在啓動時這樣做,我建議你使用啓動三個程序的shell腳本。

+0

道歉的混亂。我正在尋找所有的Java程序,以在獨立的JVM和控制檯上彼此獨立啓動。所以這就是我使用Ant腳本的原因。我希望當Jar文件運行時,會執行ant腳本,該腳本會產生多個其他命令行,同時運行特定的jar文件。 – user1087943 2013-05-06 15:24:28

+0

如果您使用'Runtime.exec()'產生了一個不同的進程(因此JVM)。檢查上面的編輯。 – 2013-05-06 15:27:11

0

使用螞蟻

<target name="jar" depends="compile"> 
    <mkdir dir="${jar.dir}"/> 
    <jar destfile="${jar.dir}/helloworld.jar" basedir="${classes.dir}"/> 
</target> 

創建一個罐子當您在一個JAR文件的多個主類,那麼每個人都必須要使用-cp標誌調用,並與指定的主類的完全限定名。

java -cp helloworld.jar com.test.Main1 && java -cp helloworld.jar com.test.Main2 

這會給你一個輸出(我剛打印的類名)

I am main 1 
I am main 2 

或者 根據您的要求,您可以創建單一入口點(我會喜歡這個),我意思是帶有主要方法的單個類別,然後調用該類別中的其他主要方法

示例

創建一個類

public class Main { 

public static void main(String[] args) { 

    Main1.main(args); 
    Main2.main(args); 
    } 
} 

納入的Manifest.MF

<target name="jar" depends="compile"> 
    <mkdir dir="${jar.dir}"/> 
    <jar destfile="${jar.dir}/helloworld.jar" basedir="${classes.dir}"> 
     <manifest> 
      <attribute name="Main-Class" value="com.test.Main"/> 
     </manifest> 
    </jar> 
</target> 

這個主類和執行的這個

I am main 1 
I am main 2 
+0

OP希望程序「在獨立的JVM和控制檯上彼此獨立啓動」。 – 2013-05-06 17:31:56

相關問題