首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何创建一个java程序来编译和运行一系列java程序

如何创建一个java程序来编译和运行一系列java程序
EN

Stack Overflow用户
提问于 2010-07-26 15:35:40
回答 5查看 438关注 0票数 3

不是使用.bat文件,而是如何为java程序编译和执行java程序列表构建代码。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 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

  • external tutorial article

  • interface JavaCompiler

相关问题

票数 3
EN

Stack Overflow用户

发布于 2010-07-26 15:42:35

java.lang.Runtime类有一个允许您执行任意外壳命令的方法。所以它应该看起来像这样:

代码语言:javascript
运行
复制
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()方法的其他几个版本。

票数 0
EN

Stack Overflow用户

发布于 2010-07-26 15:49:23

使用Runtime.getRuntime().exec(someCommand)的另一个问题是,您需要从衍生进程读取输出流和错误流,否则您的进程将挂起。

这两个流都有有限的可用缓冲区,一旦它们填满,程序将等待你从它们中读取,并且无法继续。这两个缓冲区必须在各自独立的线程中读取,以便其中一个不会死锁另一个。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3333006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档