【发布时间】:2014-04-01 20:28:11
【问题描述】:
主要问题是我无法通过 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;
}
输出:
空
【问题讨论】:
-
如果您在子进程生成空白文件时遇到问题,请询问 那个 问题,而不是寻找另一种从 Java 调用代码的方法。可能错误出在您的 C++ 代码中(例如,在没有附加终端的情况下运行时)。
-
@Greg 但它使用命令行工作
-
是的,你说过。但是仍然有可能错误地编写程序,使其在命令行中运行,但在从另一个进程调用时却无法运行。
-
或者可能有其他环境事物(命令路径、动态链接路径、导出的变量、权限)会改变命令行应用程序的调用方式。
-
如果添加 p.waitFor() 等待子进程完成,可以从中获取返回值。就我而言,它返回 -1073741515,这显然意味着“应用程序未能正确初始化”。 stackoverflow.com/questions/12534659/…
标签: java c++ gui-design