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

时间:2010-01-16 05:50:59

标签: java c++ wrapper

有没有办法让Java程序(在Windows中)充当PE的包装器 (.exe),将所有stdin输入传递给程序并写出标准输出PE写出的所有内容。

我需要这个,因为程序的接口只允许Java类,但我希望它能运行一些我用C ++编写的代码。

提前致谢。

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

3 个答案:

答案 0 :(得分:5)

看看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

答案 1 :(得分:2)

是的,java.lang.Runtime.ecec()和java.lang.Process可以使用它来访问你正在执行的* .exe的所有3个流(in / out / err)。

答案 2 :(得分:1)

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