【问题标题】:Java wrapper around a PE (.exe)围绕 PE (.exe) 的 Java 包装器
【发布时间】:2023-03-17 06:04:02
【问题描述】:

有什么方法可以制作一个 Java 程序(在 Windows 中),它只是作为 PE 的包装器 (.exe),将所有标准输入输入传递给程序,并将 PE 写入的所有内容写入标准输出。

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

提前致谢。

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

【问题讨论】:

    标签: java c++ wrapper


    【解决方案1】:

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

    是的,这可以通过 java.lang.Runtime.ecec() 和 java.lang.Process 实现,您可以使用它们将所有 3 个流(输入/输出/错误)访问到您正在执行的 *.exe。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2010-12-18
        • 1970-01-01
        • 2012-05-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多