"CreateProcess error=206, The filename or extension is too long"的一个解决方案
Mule Studio 启动时报错: java.io.IOException: Cannot run program "E:\2000\Java\JDKUpdate\bin\javaw.exe" (in directory "E:\BCS_SLN\BCS\DeveloperSource\mule\congou-runtime-esb"): CreateProcess error=206, ÎļþÃû»ò)չÃû
本机环境为:中文版Windows 8 Enterprise X64, java JDK为32位1.6.0.35版本,Mule Studio 3.2.1 CE(集成自Eclipse 3.6 Sp1)
开始怀疑是Mule环境出错,采取如下措施:
1、删除.Mule文件夹,删除.metadata文件夹,重建工作空间,均无效。
2、删除JDK,并重新安装,重启机器,故障依旧。
3、删除JDK,并重新安装64位JDK,重启机器,故障依旧。
4、修改Mule Studio 工作空间编码为UTF-8,GBK,ISO-8859-1,错误依旧。
google,看到有文章这样描述:“CreateProcess error=206, The filename or extension is too long。”,原来那段乱码是这个意思。My God!
进而看到这篇文章http://support.microsoft.com/kb/830473/en-us
该文提到:“在Windows下命令行支持的字符串长度是有限制的,在计算机上运行 Microsoft Windows XP 或更高版本,可以在命令提示符下使用的字符串的最大的长度 8191 个字符。 在运行 Microsoft Windows 2000 或 Windows NT 4.0 的计算机上, 将最大长度可以在命令提示符下使用的字符串的为 2047 个字符。”
解决方案:
(1)Use shorter names for folders and files.
(2)Reduce the depth of folder trees.
(3)Store files in fewer folders so that fewer folders are required in the PATH environment variable.
(4)Investigate possible methods that you can use to reduce the dependency of PATH for locating .dll files.
也就是说,windows下,shell指令的长度限制,导致JAVAW 后面的参数字符串(本例中
在加载每个JAR时都要加上E:\BCS_SLN\BCS\DeveloperSource\mule\congou-runtime-esb这个前缀),总长度超过8191,从而导致截断,报以上错误。
有人还写了例子验证,http://www.cnblogs.com/aigongsi/archive/2012/04/11/2442774.html
于是,修改工程所在路径为E:\mule\congou-runtime-esb,问题解决!