如何运行.exe并在Eclipse插件中捕获输出。 (JAVA)

时间:2012-08-31 15:12:30

标签: java eclipse eclipse-plugin

  

可能重复:
  Capturing stdout when calling Runtime.exec

好的,

我正在开发一个Eclipse插件,它基于一个可视化界面生成一些PHP代码(即用户在View上拖放一些东西,然后我的插件会更新一些与相关代码相关的php文件)

我正在使用FileUtils(Apache Commons)创建php文件,我正在使用ASTParser生成PHP代码。

我的问题是我需要我新生成的代码被美化并且很好地缩进。我用谷歌搜索了http://www.waterproof.fr/products/phpCodeBeautifier/。它是一个.exe文件。我已经将它添加到资源中但是我在调​​用它并从中获取输出时遇到了一些麻烦。

我该怎么做?另外我不得不说我需要它在Mac和Windows机器上工作。可以这样做吗?是否有更简单的方法来美化代码?

谢谢!

2 个答案:

答案 0 :(得分:0)

如果您可以从命令行运行它并传递文件路径以美化代码,您可以使用以下代码来运行它并捕获结果。

Process p = Runtime.getRuntime().exec("executable.exec");

BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));

while ((String line = input.readLine()) != null) {
  System.out.println(line);
}

另见: How to capture the data returned from an EXE excuted from a batch?

How can i get the console output generated by a exe file?

Capturing stdout when calling Runtime.exec

答案 1 :(得分:0)

我会这样做:

  1. 以独立于操作系统的方式解析exe的位置。
  2. 使用`Runtime.getRuntime()。exec('exe_location')创建Process;
  3. process.getOutputStream()并将未格式化的代码打印到其中,这意味着exe将读取要在STDIN上格式化的文本。
  4. process.getInputStream()并从中读出格式化的代码,这意味着exe会将格式化的输出打印到STDOUT。
  5. 关闭流并结束流程。