如何用Ant脚本创建jar文件来启动程序



我目前有一个eclipse项目,有两个主要方法,我想知道是否有可能创建一个jar文件,在jar文件执行时运行Apache Ant脚本。我在下面提供了一个Ant脚本,其中运行了两个主要方法。提前谢谢。

    <?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>

为什么需要Ant?从注释中我推断出您希望Java程序启动另一个程序。如果是,只需使用:

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

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

编辑:from Runtime.getRuntime().exec() docs:

在单独的进程中执行指定的字符串命令。

所以你正在生成另一个独立的JVM。

不要直接使用java ...,而是使用环境变量组合命令:这只是为了演示功能。

无论如何,如果您需要在启动时执行此操作,我建议您使用shell脚本启动这三个程序。

使用ant创建jar

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

And execute

   java -jar helloworld.jar

的输出
 I am main 1
 I am main 2

相关内容

  • 没有找到相关文章

最新更新