gpt4 book ai didi

Java 打开外部脚本并提供输入/获取输出

转载 作者:太空宇宙 更新时间:2023-11-04 08:44:30 24 4
gpt4 key购买 nike

好吧,仍在从事一个科学项目,涉及测试使用不同语言通过互联网发送数据的速度。我的老师似乎认为这还不够困难,并希望我运行一个主要的 Java 程序来控制客户端。

我已经弄清楚如何运行外部文件(尽管仍然遇到文件名中空格的问题)并且对此很满意。我的麻烦是,我需要以某种方式与打开的客户端(我有 Python、C、C++、Java 和 Ruby 客户端)进行测试次数,并且我需要获取通过测试获得的数据集。

最后,我需要找出如何将输入从 java 发送到 Python、C、C++、Java 和 Ruby 脚本,并收集它们的输出以放入 java。作为最后的手段,我可​​能可以让一个文本文件充当主 java 程序和每个客户端之间的中介。这不是一个非常优雅的解决方案,所以我宁愿避免它。

最佳答案

您可能正在寻找JNI - Java Native Interface 。 JNI一定能满足老师提出的难度要求。 JNI 允许 Java 代码调用其他语言中的代码并获取响应,就像调用 Java 方法一样。据我所知,JNI 的最大问题是 native (C、C++ 等)代码中的崩溃也会导致您的 Java 程序崩溃。 JNI 将使当前的外部脚本成为您的应用程序的内部代码,并且很可能比您需要的更困难。

要获得更简单的解决方案,您可能需要查看 ProcessBuilder Java 中的类。例如:

ProcessBuilder pb = new ProcessBuilder("myshellScript.sh", "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();
InputStream is = p.getInputStream();
// use process p's input stream is to provide input to your process here
OutputStream os = p.getOutputStream();
// use process p's output stream to get the results here

关于Java 打开外部脚本并提供输入/获取输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4604867/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com