0

我正在尝试使用 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崩溃。我收到错误消息,告诉我游戏找不到像网格和纹理这样的资源,这让我相信我加载它是错误的,因为通过双击它加载它可以正常工作。是否有另一种方法可以执行具有运行所需资源的程序?

提前致谢。

4

1 回答 1

2

可执行文件可能期望它的工作目录是它存在的目录。默认情况下,根据ProcessBuilder 文档

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

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

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

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

于 2013-03-13T23:39:31.667 回答