不是使用.bat文件,而是如何为java程序编译和执行java程序列表构建代码。
发布于 2010-07-26 15:40:38
在Runtime.exec上
尽管可能不是最理想的解决方案,但您可以使用Runtime.getRuntime().exec(someCommand)将shell命令作为单独的Process执行。还有一些重载将参数作为String[]。
这不是一个简单的解决方案。管理并发Process和防止死锁等不是轻而易举的事情。
相关问题
关于排出Process流
通常,您不能通过waitFor()终止Process;还必须排空它的I/O流以防止死锁。
来自the API
由于一些本机平台仅为标准输入和输出流提供有限的缓冲区大小,未能及时写入输入流或读取子进程的输出流可能会导致子进程阻塞,甚至死锁。
相关问题
关于Java 6编译器API
在Java中编译Java源代码的一种选择是使用Java 6 Compiler API。这需要安装JDK (不仅仅是JRE)。
另请参阅
来自package javax.tools
的
interface JavaCompiler
相关问题
发布于 2010-07-26 15:42:35
java.lang.Runtime类有一个允许您执行任意外壳命令的方法。所以它应该看起来像这样:
List<String> commandsToExecute = ...
for (String cmd : commandsToExecute) {
Process p = Runtime.getRuntime().exec (cmd);
p.waitFor(); // If you need to run them all sequentially.
}documentation中描述了Runtime.exec()方法的其他几个版本。
发布于 2010-07-26 15:49:23
使用Runtime.getRuntime().exec(someCommand)的另一个问题是,您需要从衍生进程读取输出流和错误流,否则您的进程将挂起。
这两个流都有有限的可用缓冲区,一旦它们填满,程序将等待你从它们中读取,并且无法继续。这两个缓冲区必须在各自独立的线程中读取,以便其中一个不会死锁另一个。
https://stackoverflow.com/questions/3333006
复制相似问题