我正在尝试使用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然后崩溃。我得到的错误告诉我,游戏找不到像网格和纹理这样的资源,这让我相信我加载错误,因为它可以正常工作,双击它加载。是否有另一种方法来执行具有运行所需资源的程序?
可执行文件可能希望它的工作目录是它所在的目录。默认情况下,根据ProcessBuilder文档:
工作目录。默认值为当前工作状态当前进程的目录,通常为系统属性user.dir.
在构建ProcessBuilder
后添加一行来设置当前工作目录:
builder.directory(new File(mPathToFile + mGameArrayList.get(i).Directory));
(假设连接给出了可执行文件所在的目录)