0

我正在运行一个批处理文件,该文件在 Java 中运行 Robocode 中的战斗,然后收集战斗结果。我用来运行批处理文件的代码是:

Process p = Runtime.getRuntime().exec("cmd /c C:\\Users\\Joel\\Documents\\ver5Files\\battle.bat");
p.waitFor();

我的批处理文件的内容是:

cd "C:\robocode"
java -DNOSECURITY=true -Xmx512M -Dsun.io.useCanonCaches=false -cp libs/robocode.jar robocode.Robocode -nodisplay -battle battles\DT_battle.battle -results resultsv5.txt
exit

如果我在 robocode 中运行少于 35 轮的战斗,这可以正常工作,但是当我尝试运行具有 35 或更多战斗的战斗时,代码会挂起并且永远不会返回到 java 代码。

我通过运行修改批处理文件进行了进一步调查,以便它在显示时运行,这样我就可以观看战斗并找出它挂在哪里。第35场战斗打完,就进入了“第35轮清理”这一步,基本就挂了。该程序没有冻结或任何东西,它只是不会初始化下一场战斗。

我已经与从事类似项目的人讨论过,他们没有遇到这些问题,我们的代码在这部分也没有显着差异。我试过在两台不同的机器上运行它,但在两台机器上都得到了相同的结果。

有什么建议吗?

4

1 回答 1

1

尝试使用/k而不是/c告诉我它是否有效。

好吧,如果您查看 cmd.exe 命令,您会发现它有很多选项。他们之中有一些是:

/C     Run Command and then terminate

/K     Run Command and then return to the CMD prompt.
          This is useful for testing, to examine variables

您可以在此处找到更多选项。

于 2016-02-26T23:34:50.067 回答