情景:
在eclipse中,执行main方法函数。
错误提示:
Exception occurred executing command line.
Cannot run program “D:\soft\Java\jdk1.6.0_12\bin\javaw.exe” (in directory “E:\DevCode\Ali\20121008_ordercenter”): CreateProcess error=87, ²ÎÊý´í
分析:
网上有人说是由于classpath路径太长导致,有人说是Maven仓库的路径太长导致,总之由于路径长导致是对的,但是网上的很多解决的办法是去把路径改短,这里有投机取巧之嫌,因为万一路径超长,就算把maven respositroy 的路径根目录调整短一点也不至于就能解决问题。
正确的解决办法应该是从eclipse根源去解决,这个问题是由于eclipse的一个BUG导致的,需要打下补丁去彻底解决该问题。
Eclipse bug report:https://bugs.eclipse.org/bugs/show_bug.cgi?id=327193
解决办法:
1、根据自己的eclipse版本,在Eclipse bug report页面下载合适的补丁。比如我的eclipse indigo是3.6的,所以需要下载适合3.6版本的补丁。
2、解压下载的文件,得到如下几个文件。
3、到Eclipse的安装目录 $Eclipse_HOME/plugins/下找到org.eclipse.jdt.launching_XXX.XXX.jar文件(XXX部分由不同的版本可能不同,比如我的就是org.eclipse.jdt.launching_3.6.0.v20110509.jar),把该文件进行解压
4、把下载的补丁的4个文件替换到解压jar的同路径org.eclipse.jdt.internal.launching下
5、把解压jar根目录下的META-INF/MANIFEST.MF用文本编辑器打开,把所有“Name:”开头的类似于以下的文本全部删除掉。我的版本中是从第26行开始,后面的全部删除掉。另外,注意删除完毕后,在最后一定要留上两个空行。保存。
6、返回到解压后的jar的根目录,采用打包命令 jar cf org.eclipse.jdt.launching_XXX.XXX.jar *.* (jar的文件名一定要和你原先的名称一致)进行打包。
7、打包得到 org.eclipse.jdt.launching_XXX.XXX.jar 后,把该jar替换覆盖至$Eclipse_HOME/plugins/,重启Eclipse。