主要问题是我无法通过 Java 来运行我的 C++ 逻辑; 我是否正确创建了子流程?
谢谢大家; - - 更新! ---
所以我写了这些,以最纯粹的方式测试打开.exe的能力; Eclipse 可以看到该文件/不会提示它不存在;使用 Eclipse 中的运行按钮运行:
java文件:
import java.io.*;
public class Runs_A_Exe {
public static void main( String[] args ){
try {
ProcessBuilder pb = new ProcessBuilder( "M:\\aaa\\bbb\\ccc\\ddd\\eee\\workspace\\Runs Simple Exe\\src\\executables\\a.exe" );
Process p = pb.start();
InputStream is = p.getInputStream();
InputStreamReader isr = new InputStreamReader( is );
BufferedReader br = new BufferedReader( isr );
System.out.println( br.readLine() );
}
catch ( Exception e ) {
System.out.println( e );
}
}
}
C++文件:
#include <iostream>
int main( void ) {
std::cout << "Hey!" << std::endl;
}
输出:
null
最佳答案
您是否使用正确的参数调用它? C++ 是否有正确的工作目录? Java 是否正确解析标准输出?如果你只在 C++ 中做一个 hello world,你能在 Java 中看到它吗?
我建议从头开始,让它与尽可能简单的 C++ 程序一起工作,然后慢慢地使 C++ 复杂化(回到你的逻辑中)
- 首先从 java 调用 hello world,并确保在 Java 中正确读取输出
- 然后添加一些参数并确保在 java 中正确读取输出,
- 然后添加一些逻辑,并确保从 Java 中正确读取输出。
并确保 C++ 始终 与 Java 一起正常工作。如果可以,请编写自动化测试 :)
发生的事情是您犯下了从一开始就没有端到端集成构建您的应用程序的大罪。你感到的痛苦是你在赎罪:P。
当然,我是在开玩笑,但说真的,下次,我会建议您尽快集成 C++!它的那些集成点始终是任何软件中的问题根源(我知道)。尽早解决它们是确保您以后可以专注于逻辑的好方法。如果我可以建议阅读,请查看 Growing object oriented software guided by test ,这是这种方法的一个很好的示范。
关于java - 还有其他方法可以从 Java 运行 .exe 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22802737/