从 Java 调用预处理器工具

发布于 2024-10-30 09:47:06 字数 368 浏览 1 评论 0原文

我有一个使用 MCPP(预处理器)进行预处理的 C 源代码。我想用 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参数已编辑

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.
Suggestions awaited.

cmd parameters edited

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

花间憩 2024-11-06 09:47:06

又怎样呢

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

What about

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

?

提笔书几行 2024-11-06 09:47:06

您的问题是您的命令正在与您预期不同的目录中运行。您需要使用三参数版本的 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"));

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"));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文