无法启动应用程序(CreateProcess 错误=87),不能使用缩短类路径解决方法

Posted

技术标签:

【中文标题】无法启动应用程序(CreateProcess 错误=87),不能使用缩短类路径解决方法【英文标题】:Fail to launch application (CreateProcess error=87), can't use shorten classpath workaround 【发布时间】:2011-02-23 01:14:15 【问题描述】:

当我在 Windows 上的 Eclipse 中启动我们的应用程序时,我收到以下错误:

执行命令行时发生异常。

无法运行程序.. : CreateProcess error=87, 参数不正确

我过去通过缩短 CLASSPATH 解决了这个问题。

我现在已经到了不能再缩短 CLASSPATH 的地步,想知道是否还有其他解决方法。

http://support.microsoft.com/kb/830473好像表示windows xp中的最大命令行长度为8191个字符,唯一的解决办法是缩短文件夹名称,减少文件夹树的深度,使用参数文件等。

【问题讨论】:

您找到更好的解决方法了吗? 【参考方案1】:

eclipsecoding FAQ page 确实确认了您的诊断:

CLASSPATH 变得太长时,程序无法启动(至少在 Windows 下) - 尝试缩短您的类路径。如果是插件,可以尝试移除不必要的必需插件。

您有here a thread 详细说明日志错误。

由于您可以启动 Eclipse,但不能启动应用程序,因此我会检查您的启动配置中是否包含太多插件。你能检查一下你有没有added only the required plugins吗?

【讨论】:

【参考方案2】:

我遇到了同样的问题。无论我尝试什么,尝试运行剪贴簿页面都不会成功。我在工作区中检查了我的 .plugins 目录的内容。我注意到 de org.eclipse.jdt.core 目录中有很多索引文件。我重命名了这个目录,现在可以再次运行剪贴簿进程。

【讨论】:

【参考方案3】:

作为一种解决方法:

    为失败的任务打开 Eclipse 运行配置。 选择classpath选项卡,选择默认classpath,点击“Edit..”按钮 选中“仅包括导出的条目”复选框。

这让我在 Eclipse 3.6 (Helios) 上解决了这个问题

【讨论】:

这在 SpringSource ToolSuite 2.5.1 上不起作用我不得不将我的项目移动到具有较小目录路径的文件夹中。【参考方案4】:

我在 Eclipse 上处理了同样的问题,因此,出于这个原因,我决定尝试在 Intellij 上的同一个项目,只是想知道它是否是一个 IDE 问题。

令人惊讶的是,Intellij 检测到了这个问题(长类路径)并向我显示了一个对话框,建议我使用动态类路径功能。启用此选项后,问题消失了。

dynamic.classpath 标志的作用是: What does the dynamic.classpath flag do? (IntelliJ project settings)

所以,现在我的问题是:有没有办法在 Eclipse 上做同样的事情?似乎是解决这个问题的一个简单而优雅的解决方案,而不是手动删除所有不必要的依赖项。

【讨论】:

【参考方案5】:

这绝对是类路径太长导致命令行超出其最大限制的问题。要解决,请缩短您的类路径。如果您使用的是 Maven(就像我一样 - 例如在 Jive 开发中),那么通过更改 maven settings.xml

来更改 .m2 的位置
<settings>
  <localRepository>c:/.m2/repository</localRepository>
</settings>

然后将您的存储库从用户目录移到那里,但确保 settings.xml 和 settings-security.xml(如果适用)仍在用户目录中。这样,类路径将不再一遍又一遍地显示 c:\Documents and Settings\username.m2,而是 c:.m2 允许显着减少类路径,从而显着减少命令长度。请记住,在 Windows 中,您不能(自己)创建名称为 .m2 的目录,因此您必须剪切目录,粘贴到 c: 中,然后将其复制回您的用户文件夹

【讨论】:

【参考方案6】:

使用可以通过 juncion (http://technet.microsoft.com/en-us/sysinternals/bb896768) 轻松创建的动态链接。为您的项目创建链接并将其添加到 eclipse 中。 用法例如: md d:\短名称 路口 d:\shortname\ d:\my\very\long\long\long\long\long\long\projectnamefolder

【讨论】:

【参考方案7】:

这是 Eclipse 中的一个已知错误:Bug 327193 - [patch] 在 Windows 上启动命令行超出了进程创建命令限制

它将在 2013 年发布的 Eclipse e4 4.3 中修复。它被认为不够重要,无法在 3.4.2 中修复。但是在错误的附件中,您可以找到几个替换类来修复您的 Eclipse 版本。

【讨论】:

【参考方案8】:

我为 Eclipse 提供的一个解决方案是关闭通过工作区解析启用的某些项目,而是从本地 Maven 存储库中解析这些项​​目。反正对我有用

【讨论】:

【参考方案9】:

我遇到了同样的问题,项目引用了 un-build jar 文件。 假设 tools-1.6.jar 已构建并添加为依赖项。稍后可能会更改 tools-1.6.jar 的源代码并且没有执行#mvn clean install。

我已经完成了干净的构建并更新了 maven 依赖项,错误已解决。

【讨论】:

【参考方案10】:

由于我在Eclipse Helios(我们部门官方支持的唯一版本)上遇到了同样的问题,并且我很难解决这个问题,这里是解决方案:

安装最新的 Eclipse(在我的例子中 4.3.2 完成了工作)。

此问题已报告为 Eclipse 错误:https://bugs.eclipse.org/bugs/show_bug.cgi?id=327193,现已修复。

希望这对将来访问此页面的用户有所帮助。

【讨论】:

以上是关于无法启动应用程序(CreateProcess 错误=87),不能使用缩短类路径解决方法的主要内容,如果未能解决你的问题,请参考以下文章

CreateProcess 无法在 Windows 7 中启动 Adob​​e Reader

CreateProcess() 启动子应用程序

CreateProcess() 无法正常工作

Windows 7 CreateProcess,子进程无法写入文件?

错误:无法运行程序“jar”:CreateProcess error=2,系统找不到指定的文件

无法运行程序“C:\Users\admin\AppData\Local\Android\Sdk\platform-tools\adb.exe”:CreateProcess 错误=193,%1 不是有效