前段时间更新了Eclipse的maven插件,原来安装的是m2eclipse插件,后来更新成了m2e插件。结果在运行以前的maven工程时报错:
Referenced?classpath?provider?does?not?exist:?org.maven.ide.eclipse.launchconfig.classpathProvider
?截图如下:
引起这个错误的原因主要是新的m2e插件的namespace已经修改了,而之前的工程的启动配置依然指向旧插件的名称。我们可以在Eclipse workspace下查看类的.launch文件,具体路径为:
\workspace\.metadata\.plugins\org.eclipse.debug.core\.launches
?找到对应的类的.launch文件,使用文本编辑器打开后里面的内容应该类似如下:
<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER"value="org.maven.ide.eclipse.launchconfig.classpathProvider"/><stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER"value="org.maven.ide.eclipse.launchconfig.sourcepathProvider"/>
?实际上正确的配置应该是:
<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER"value="org.eclipse.m2e.launchconfig.classpathProvider"/><stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER"value="org.eclipse.m2e.launchconfig.sourcepathProvider"/>
?所以就能印证我们之前的猜测,maven插件的namespace从?org.maven.ide.eclipse 修改成了org.eclipse.m2e 从而导致了这个问题的产生。
?
?
对于这个问题,最简单的解决方案就是在IDE(Eclipse)里右键选中工程,然后选择Configure?->?Convert to Maven Project? ,这样操作完以后,修复了损坏的launch configuration,启动就正常了。
?
参考资料:http://www.subshell.com/en/subshell/blog/article-Changing-from-m2eclipse-to-m2e-Eclipse-Indigo100.html