【问题标题】:Loading Executables with Java ProcessBuilder使用 Java ProcessBuilder 加载可执行文件
【发布时间】:2013-03-13 23:30:46
【问题描述】:

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

提前致谢。

【问题讨论】:

    标签: java windows executable processbuilder


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-11
      • 1970-01-01
      • 1970-01-01
      • 2011-04-16
      • 2014-03-14
      • 2021-02-15
      相关资源
      最近更新 更多