【问题标题】:Cmd Error - Not enough storage is available to process this commandCmd 错误 - 没有足够的存储空间来处理此命令
【发布时间】:2012-05-14 18:33:24
【问题描述】:

我为我的文凭开发了一个应用程序,有时我必须从 java 源文件运行一个批处理文件。问题是每次我尝试执行该批处理文件时都会收到此错误:“没有足够的存储空间来处理此命令”。

这个批处理文件只是运行 cvs log 命令。如果我直接从 cmd 运行命令,一切正常,但如果我尝试运行包含此命令的批处理文件,我会收到该错误:(

我用这个例子来运行一个批处理文件:

// --------------
Process process = Runtime.getRuntime().exec(cmd);
process.waitFor();
// --------------

其中,cmd 是这样的字符串:"cmd /c start \"\" absolute_path_of_batch_file"。

有谁知道我该如何解决这个问题?这个错误到底是什么?谢谢!

【问题讨论】:

  • 可能在您用完内存的同时启动 Java 应用程序。尝试使用 -Xmx 降低 Java 堆。只是一个简单的猜测,但如果你说你可以单独启动 cmd,它可能会起作用。
  • alain.janinm:我试过了,但没用。还有其他建议吗?谢谢!
  • 抱歉没有其他想法。它可能与 Windows 内存管理有关,而且我更像是一个 linux 用户,很难告诉你......我已经正确地重新标记了你的问题。
  • 如果您也使用批处理文件运行 java,您可以尝试双击该 jar。 /Q = 安静,无回声输出。也许没有开始? cvs log ...?
  • alain.janinm:谢谢!祝你有美好的一天!

标签: java windows batch-file


【解决方案1】:

从 java 运行将在自己的进程中运行命令,因此它应该与从命令行运行命令完全相同。可能不同的是您运行批处理文件的目录(或环境变量)。批处理文件中是否有相对路径?

否则,在cmd 字符串上执行sysout 并在cmd 终端中准确执行该字符串,看看它是否有效。并发布确切的错误。

【讨论】:

  • Hill:在我的批处理文件中没有相对路径。批处理文件非常简单:它有两个输入参数(一个目录 - 将执行 cvs log 命令的位置;和一个输出文件 - 将放置 cvs log 命令的输出的位置)。它看起来像这样:CD %1 cvs log > %2。两个参数的路径都是绝对路径!
  • Hill:To understand better let me show you an example:click here(我希望我被允许这样做)。在图片的左侧,您可以看到通过执行批处理文件生成的输出,来自 java 源。在屏幕的右侧,您可以看到在 cmd 提示符下直接执行命令的输出。 你可以看到输出是一样的,但是它显示了那个消息
  • 尝试使用java -Xmx4G <your class> 运行您的程序,看看是否可行。
猜你喜欢
  • 2014-06-23
  • 1970-01-01
  • 2015-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多