I have a C source that I have preprocessed using MCPP, a preprocessor. I want to parse this preprocessed source with Java parser. For that I need to call it from Java. Is there some API available to handle such call. I plan to execute DOS commands as a batch file and execute it at Java Runtime. When I used the standard exec method
Runtime r = Runtime.getRuntime();
Process dos = r.exec("cmd.exe /c C:\\mcpp\\bin\\mcpp.exe -Iinclude csample.c");
It gives error that preprocessor cannot open input file.
Sugge开发者_JAVA百科stions awaited.cmd parameters edited
ProcessBuilder comes to my mind
What about
Runtime r = Runtime.getRuntime();
Process dos = r.exec("C:\\mcpp\\bin\\mcpp.exe -Iinclude csample.c");
?
Your problem is that your command is being run in a different directory than you expect. You need to provide the appropriate directory using the three-argument version of exec()
:
public Process exec(String command,
String[] envp,
File dir)
throws IOException
where the third argument gives the current directory for the command being executed. Make sure to set it to the directory where the input is located.
EDIT: Example:
r.exec("cmd.exe /c C:\\mcpp\\bin\\mcpp.exe -Iinclude csample.c",
null, // inherit current process environment
new File("/path/containing/csample.c"));
精彩评论