java - 使用 Java ProcessBuilder 加载可执行文件

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

提前致谢。

最佳答案

可执行文件可能期望其工作目录是它所在的目录。默认情况下,根据 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/

相关文章:

windows - 使用 TopShelf,我在 "Topshelf.HostConfigurators.WindowsServiceDescription service has not been installed yet."附近遇到错误

用于日期扫描的Java库(如数字扫描仪)?

java - 查找 Java 集合中的所有匹配项

java - 在 Java 9+ 中使用 JRE 运行时,我可以提供运行时编译器访问吗?

c++ - 为什么 Windows 10 会在我的程序中启动额外的线程?

python - 为什么我不能从Windows上的pip下载我的软件包的最新版本?

c# - 如何为 .NET Core 控制台应用程序创建独立的可执行文件?

python - py2exe 64位python 2.7安装

java - BAD : need suggest on selenium using radio button select. 有三个单选按钮。需要选择适当的。但出现错误

go - 在 Go 中执行二进制时获取输入