使用Java ProcessBuilder加载可执行文件

时间:2013-03-13 23:30:47

标签: java windows executable processbuilder

我正在尝试使用ProcessBuilder从我的Java应用程序加载可执行文件。

代码:

String [] cmdArray = new String[1];
cmdArray[0] = mPathToFile + mGameArrayList.get(i).Directory + mGameArrayList.get(i).Executable;

ProcessBuilder builder = new ProcessBuilder(cmdArray);
final Process process = builder.start();
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;
while ((line = br.readLine()) != null) {
  System.out.println(line);
}

我正在尝试加载的.exe是一个我自己创建并在VS 2010中编译的小游戏。我已经将任何错误输出到控制台,Java程序正在使用BufferedReader,加载.exe然后崩溃。我收到错误,告诉我游戏无法找到像网格和纹理这样的资源,这让我相信我加载错误,因为它可以通过双击加载来正常工作。是否有另一种方法来执行具有运行所需资源的程序?

提前致谢。

1 个答案:

答案 0 :(得分:2)

可执行文件可能希望其工作目录成为它所在的目录。默认情况下,根据ProcessBuilder documentation

  

工作目录。默认值是当前工作   当前进程的目录,通常是由目录命名的目录   系统属性user.dir。

在构建ProcessBuilder后添加一行以设置当前工作目录:

builder.directory(new File(mPathToFile + mGameArrayList.get(i).Directory));

(假设连接为您提供了可执行文件所在的目录)