2010-08-03 56 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修补(除非你有大量的时间可用,我们通常不会)。