【问题标题】:Calling a preprocessor tool from Java从 Java 调用预处理器工具
【发布时间】:2011-07-29 15:59:18
【问题描述】:

我有一个使用预处理器 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参数已编辑

【问题讨论】:

  • 请编辑您帖子中的代码以显示实际的“dos 命令”参数。这就是问题所在。发布代码时要小心编辑掉“不重要”的信息。

标签: java preprocessor


【解决方案1】:

我想到了ProcessBuilder

【讨论】:

    【解决方案2】:

    怎么样

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

    ?

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 你能不能举个具体的例子,我不明白你写的 exec 命令的语法。
      猜你喜欢
      • 2010-11-11
      • 1970-01-01
      • 2011-10-20
      • 1970-01-01
      • 1970-01-01
      • 2014-01-03
      • 2012-02-07
      • 2010-11-08
      • 1970-01-01
      相关资源
      最近更新 更多