从Java调用预处理器工具
我有一个C源代码,我已经使用MCPP(一个预处理器)进行了预处理。我想用Java解析器解析这个预处理的源代码。为此,我需要从Java调用它。是否有一些API可用于处理此类调用。我计划以批处理文件的形式执行DOS命令,并在Java运行时执行它。 当我使用标准exec方法时从Java调用预处理器工具,java,preprocessor,Java,Preprocessor,我有一个C源代码,我已经使用MCPP(一个预处理器)进行了预处理。我想用Java解析器解析这个预处理的源代码。为此,我需要从Java调用它。是否有一些API可用于处理此类调用。我计划以批处理文件的形式执行DOS命令,并在Java运行时执行它。 当我使用标准exec方法时 Runtime r = Runtime.getRuntime(); Process dos = r.exec("cmd.exe /c C:\\mcpp\\bin\\mcpp.exe -Iinclude csample.c")
Runtime r = Runtime.getRuntime();
Process dos = r.exec("cmd.exe /c C:\\mcpp\\bin\\mcpp.exe -Iinclude csample.c");
它给出了预处理器无法打开输入文件的错误。
有待提出建议
编辑的cmd参数出现在我的脑海中关于
Runtime r = Runtime.getRuntime();
Process dos = r.exec("C:\\mcpp\\bin\\mcpp.exe -Iinclude csample.c");
?您的问题是您的命令运行在与预期不同的目录中。您需要使用以下三个参数版本提供适当的目录: 其中第三个参数给出正在执行的命令的当前目录。确保将其设置为输入所在的目录 编辑:示例:
r.exec("cmd.exe /c C:\\mcpp\\bin\\mcpp.exe -Iinclude csample.c",
null, // inherit current process environment
new File("/path/containing/csample.c"));
请编辑文章中的代码以显示实际的dos命令参数。这就是问题所在。在发布代码时,请小心编辑不重要的信息。请您举一个更具体的例子,我不理解您编写的exec命令的语法。
r.exec("cmd.exe /c C:\\mcpp\\bin\\mcpp.exe -Iinclude csample.c",
null, // inherit current process environment
new File("/path/containing/csample.c"));