【问题标题】:Getting Java to talk to Python, C, C++, and Ruby让 Java 与 Python、C、C++ 和 Ruby 对话
【发布时间】:2011-01-19 14:56:17
【问题描述】:

我已经成功让 ProcessBuilder 运行外部脚本,但我仍然需要让 Java 与外部脚本通信。我认为我应该从流程中获取输入/输出流,并使用它们来发送和接收数据。我在为脚本提供输入时遇到了最大的麻烦。似乎我可以通过使用脚本的打印功能从脚本中获取输出,但我似乎无法让脚本注册来自主 java 程序的输入。

这个问题涉及四种语言,所以如果你只发布关于一种语言的答案就可以了。

【问题讨论】:

    标签: java c++ python c ruby


    【解决方案1】:

    Process 类的 getOutputStream() 方法返回一个您可以在 Java 中写入的流,该流连接到进程的标准输入流。您应该能够像通常阅读每种语言的标准输入一样阅读此内容(例如,cin 代表 C++,scanf 代表 C,STDIN.read 代表 Ruby,不懂 Python!)

    如果这是您正在做的事情并且它不起作用(您的问题听起来可能是,但很难说)您能否发布一些代码以便更容易地查看您可能做错了什么?

    【讨论】:

    • 感谢 C++、C 和 Ruby 的命令!我让 Python 通过 raw_input 工作
    【解决方案2】:

    您可能应该使用标准的进程间机制,例如管道或套接字。

    所有这些语言都有可用于这两种语言的库,并且此策略允许在您的任意 2 个进程(Java/Ruby、Ruby/Python、Java/C 等)之间进行通信

    【讨论】:

      【解决方案3】:

      在让 Java 与 Python 对话方面,您是否考虑过 Jython

      关于 C 和 C++,标准的想法是使用 Java Native Interface。一旦您可以与 C/C++ 对话,您就可以使用 C/C++ 与几乎任何其他语言对话,包括 Python 和 Ruby。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-11-10
        • 1970-01-01
        • 1970-01-01
        • 2014-12-01
        • 2012-12-11
        • 2023-03-16
        • 2013-09-03
        相关资源
        最近更新 更多