0

我有一个 Tomcat servlet,它通过 java 的 ProcessBuilder 调用 Windows BAT 文件。似乎如果我在 BAT 文件中的命令上有超过 1000 个字符,则该过程将失败,并从 ProcessBuilder 返回代码 128。

这很奇怪 - 我可以编辑 BAT 文件并在有问题的命令中放置几个​​空格并导致错误......或者我可以删除空格并且一切运行干净。

有任何想法吗?

4

2 回答 2

0

您超出 shell 的命令名称限制的可能性要大得多。

在 BAT 文件中,CMD.EXE 程序正在读取行,而不是 Tomcat。Tomcat 负责启动 CMD.EXE 进程(使用提供的 BAT 文件参数)。

于 2012-04-30T17:33:26.123 回答
0

不是java的tomcat的限制。这是Windows的限制。顺便说一句,即使是 Unix 系统也有这种限制,只是它通常要大得多。

所以,要解决这个问题,不要创建这么长的命令行。如果您无法修改您的 bat 文件,请创建其他运行您的不可修改文件的批处理文件。第二个 bat 文件可以在运行时在用户 temp 下的某处动态创建。然后您可以运行它并在不再需要它时将其删除。

于 2012-04-30T17:34:04.333 回答