代码之家  ›  专栏  ›  技术社区  ›  Peter Alexander

围绕PE(.exe)的Java包装器

  •  3
  • Peter Alexander  · 技术社区  · 14 年前

    有没有办法让Java程序(在Windows中)只是作为PE的包装器 (.exe),将所有stdin输入传递到程序,并将PE写出的所有内容写入stdout。

    我需要这个,因为程序的接口只允许Java类,但我希望它运行一些我在C++中集成的代码。

    事先谢谢。

    编辑:可移植性是0%重要。这只需要在Windows中工作,而不需要在其他任何地方工作。

    3 回复  |  直到 14 年前
        1
  •  5
  •   TofuBeer    14 年前

    看一看 ProcessBuilder :

     ProcessBuilder pb = new ProcessBuilder("myCommand", "myArg1", "myArg2");
     Map<String, String> env = pb.environment();
     env.put("VAR1", "myValue");
     env.remove("OTHERVAR");
     env.put("VAR2", env.get("VAR1") + "suffix");
     pb.directory("myDir");
     Process p = pb.start();
    

    and another example of it .

        2
  •  2
  •   x4u    14 年前

    是的,Java.Lang.RunTime.EcECh()和JavaLang.Poice是可能的,您可以使用它来将所有3个流(I/Out/Err)插入到正在执行的*.exe中。

        3
  •  1
  •   Community Ian Goodfellow    7 年前

    其他人提到了标准的Java机制。 ProcessBuilder 及其 ilk )但是,可靠地重新路由stdout/stdin/errout需要 care ( additional )如果您不需要在Java应用程序中处理这个I/O,请考虑使用本地调用(例如C)。 system 功能通过 JNI JNA ( demo here )