我想一个接一个地编译和执行一组java程序。
请给我一些关于如何执行任务的示例程序来帮助我。
请告知......
答案 0 :(得分:4)
答案 1 :(得分:3)
你不能调用main方法中其他程序的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
答案 2 :(得分:2)
您也可以通过编程方式使用java编译器API。 http://download-llnw.oracle.com/javase/6/docs/api/javax/tools/package-summary.html
必要的工具jar隐藏在JDK目录中。
答案 3 :(得分:1)
当我必须这样做时,我创建了一个运行的perl脚本。在脚本中,我使用系统调用来执行java程序(一个接一个)。我还能够在程序之间更改目录。
答案 4 :(得分:1)
使用apache ant(http://ant.apache.org)或maven(http://maven.apache.org)
之类的东西答案 5 :(得分:0)
Runtime.getRuntime().exec("javac.exe");
传递.java文件名进行编译。
Runtime.getRuntime().exec("java.exe");
传递类名以执行。
答案 6 :(得分:0)
为什么不使用NetBeans或Eclipse?但是一旦熟悉了这些工具,尝试用'javac'编译源代码并从命令行用'java'执行类
参见例如http://java.sun.com/developer/onlineTraining/tools/netbeans_part1/ 或http://download.oracle.com/javase/tutorial/getStarted/cupojava/netbeans.html
答案 7 :(得分:0)
您可以使用ant
例如,如果目录src
src/Hello.java
src/Hola.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
中,然后输入ant
或ant 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
中安装ant
答案 8 :(得分:0)
所以基本上你需要的是一个构建系统,类似于通用编程的make和MAKEFILE组合。构建系统通常是一个解析文件的程序,该程序描述构建系统生成可执行文件需要执行的操作。但是像往常一样,可能会发生更多的事情(您可以执行编译的文件,生成文档等)。
因此,在OscarRyz的上述示例中,ant项目文件定义了文件所在的源目录,并在编译后运行该目录中的文件。 javac 标记和 java 标记。
关于ant的好处是它也是用java编写的,所以你真的不需要做任何其他事情。蚂蚁的文档非常好,有一些例子,值得一读。
我认为这不值得,特别是如果你是初学者开始使用奇怪的运行时结构或直接修改javac(除非你有大量的时间可用,我们通常不会这样做:)。 / p>