Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Java调用预处理器工具_Java_Preprocessor - Fatal编程技术网

从Java调用预处理器工具

从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")

我有一个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");
它给出了预处理器无法打开输入文件的错误。 有待提出建议

编辑的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"));