2011-04-05 78 views
1

我有一个C源代码,我使用预处理器MCPP进行了预处理。我想用Java解析器解析这个预处理的源代码。为此我需要从Java调用它。是否有一些API可用于处理此类调用。我打算将DOS命令作为批处理文件执行并在Java Runtime中执行。 当我使用的标准exec方法从Java调用预处理器工具

Runtime r = Runtime.getRuntime(); 
Process dos = r.exec("cmd.exe /c C:\\mcpp\\bin\\mcpp.exe -Iinclude csample.c"); 

它给出错误预处理程序无法打开输入文件。
等待的建议。

CMD参数编辑

+1

请编辑代码在你的岗位上显示实际 “DOS命令” 参数(S)。这就是问题所在。发布代码时要小心编辑“非重要”信息。 – 2011-04-05 04:59:53

+1

是否有堆栈跟踪? – Nishant 2011-04-05 05:25:11

回答

0

什么

Runtime r = Runtime.getRuntime(); 
Process dos = r.exec("C:\\mcpp\\bin\\mcpp.exe -Iinclude csample.c"); 

+0

没有什么变化。 – Michael 2011-04-05 06:27:49

0

您的问题是您的命令正在运行在与您预期不同的目录中。你需要使用的exec()三个参数版本,以提供相应的目录:

public Process exec(String command, 
        String[] envp, 
        File dir) 
      throws IOException 

,其中第三个参数给出的命令将当前目录执行。确保将其设置为输入所在的目录。

编辑:例:

r.exec("cmd.exe /c C:\\mcpp\\bin\\mcpp.exe -Iinclude csample.c", 
     null, // inherit current process environment 
     new File("/path/containing/csample.c")); 
+0

你可以更具体的例子,我不明白你写的exec命令的语法。 – Michael 2011-04-06 01:20:16

+0

@Michael:我编辑了我的回复以包含示例。 – 2011-04-06 03:11:55