我正在尝试使用 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 documentation :
a working directory. The default value is the current working directory of the current process, usually the directory named by the system property user.dir.
在构建 ProcessBuilder
后添加一行来设置当前工作目录:
builder.directory(new File(mPathToFile + mGameArrayList.get(i).Directory));
(假设串联为您提供了可执行文件所在的目录)
关于java - 使用 Java ProcessBuilder 加载可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15398518/