如何修复“更新Maven项目”错误。Unsupported IClasspathEntry kind=4?

413

我在STS中导入了Maven项目,在运行更新项目时收到以下提示:

"Updating Maven Project". Unsupported IClasspathEntry kind=4

有没有解决这个问题的方法?


命令行构建是否可行?使用哪个Maven版本? - khmarbaise
我有同样的问题,而且我无法通过这个答案解决。你能否请看一下 http://stackoverflow.com/questions/12049566/an-internal-error-occurred-during-enabling-maven-dependency-management-unsup - Hemant Metalia
15个回答

615

这个问题已经在m2e 1.5.0中得到解决,该版本适用于Eclipse Kepler (4.3)和Luna (4.4)

请参阅https://bugs.eclipse.org/bugs/show_bug.cgi?id=374332#c14

问题是由于STS(Spring IDE/Eclipse)以及Eclipse和其他基于Eclipse的IDE使用了m2e(clipse)插件,但可能已经在项目上运行了eclipse:eclipse导致的。当m2e遇到"var".classpath条目时,它会抛出此错误。

更新网站位于以下URL:
http://eclipse.org/m2e/m2e-downloads.html

如果由于任何原因无法使用m2e 1.5.0,则:

  1. 通过右键单击菜单禁用项目的Maven特性

  2. 运行mvn eclipse:clean(当项目在STS/eclipse中打开时)。根据时间安排,在重新启用Maven特性之前,您可能需要对项目进行一两次刷新。 您应该能够看到您的项目已经失去了Maven特性。(eclipse:clean目标只是删除 .project .classpath .settings / 文件/目录。 您也可以在运行 mvn eclipse:clean 之前直接将这些文件(再次打开项目)删除。)

  3. 重新启用Maven特性。
    (大多数情况下,这可以通过在包资源管理器窗格中右键单击相关项目,然后选择“配置”->“转换为Maven项目”来完成)


3
我必须尝试两次才能使其正常工作。第一次尝试时,"var" 再次出现在 .classpath 文件中。我用 mvn eclipse:eclipse 重新生成了文件,然后再次尝试。第二次成功了。 - Deepak Bala
1
可能有所帮助的是,从.classpath文件中手动删除所有classpathentry,其中kind属性设置为var - Puigcerber
31
这对我起了作用,但在重新启用Maven性质之前,我需要进行额外的“刷新”(实际上,在我的情况下是“配置为Maven项目”,因为这是一个faceted project)。 - Stuart Watt
2
https://repository.sonatype.org/content/repositories/forge-sites/m2e/ 不再工作 - Shervin Asgari
2
我认为您弄错了Eclipse的版本:Eclipse Kepler是4.3,而Luna是4.4。 - vogella
显示剩余10条评论

63
  1. 右键点击您的项目,选择Maven -> 删除Maven Nature。

  2. 打开终端,进入您的项目文件夹,并执行mvn eclipse:clean 命令。

  3. 右键单击您的项目并选择“配置 -> 转换为Maven项目”

现在,“Unsupported IClasspathEntry kind=4 Eclipse Scala”已经消失了。


5
谢谢您的留言。只是想提醒其他人,正确的命令是mvn eclipse:clean,而不是mvn clean(我因为没有仔细看而被误导了)。 - Jin Kim
好的。我已经通过命令行创建了src/java文件夹,在导入项目到Kepler后。就是这样的情况。 - Zbyszek

45
有时候,即使重新导入Maven项目也无法解决问题。在Eclipse中正确更新项目并不是一个确定性的过程。 我发现唯一100%安全的程序是:
  1. 禁用Maven Nature,运行mvn eclipse:clean,重新启动,双手合十,祈祷3次。
  2. 如果这个方法不起作用,删除项目,运行mvn eclipse:clean,重新导入并刷新,祈祷并使用力量
  3. 如果还是没有效果,重新启动Eclipse,或者最好重启电脑。在等待重启期间,您可以进行随机捐赠以修复您的命运。重复第2步骤,别忘了祈祷和控制自己的愤怒。愤怒会导致仇恨。仇恨会导致痛苦。
  4. 尝试本主题帖子中发布的所有其他答案。在放弃之前,您可能需要至少尝试三次。
  5. 格式化您的计算机,重新安装Eclipse和Maven。不需要再祈祷了,因为所有的神都讨厌你。
  6. 删除您的Git项目,销毁存储远程存储库的物理驱动器,并从头开始编写您的项目。
  7. 找到一个时光机,穿越回过去,说服自己选择另一种非编程职业或至少避免Java。

3
尝试了所有方法,都提示“Maven依赖管理问题”或“空指针异常”。 - jpmelanson
2
保持冷静并重新启动撤销重复。 - yannicuLar
2
Java对你做了什么? - Evil Washing Machine
2
@EvilWashingMachine 没什么坏事..只是试图编造一个借口来合理使用时间机器。 - yannicuLar
1
保持冷静,使用vim + 终端。 - Pratik Singhal

12
  1. 确保您正在运行的 m2e(clipse) 插件版本至少为 1.1.0

  2. 关闭 Maven 项目 - 右键单击 "关闭项目"

  3. 手动删除 .classpath 文件中所有 kind="var" 的 classpathentry
  4. 打开项目

或者

  1. 删除 Maven 项目
  2. 手动删除 .classpath 文件
  3. 重新导入项目

错误并不是像@Marco所说的那样与STS有关。这是一个普遍的m2e问题。禁用Maven nature,删除.classpath文件,重新启用Maven nature。 - sbzoom

6

你尝试过以下方法了吗:

  1. 如果你已经把项目导入到了Eclipse 4,请将其删除。
  2. 在Maven控制台中,运行命令:mvn eclipse:clean
  3. 在Eclipse 4中,选择“文件” -> “导入” -> “Maven” -> “现有的Maven项目”

1
在执行此操作之前,请确保项目之前没有运行过Maven Eclipse插件。如果需要,可以使用mvn eclipse:clean进行修复。 - AChoice
3
在Juno版本中,这对我起了更好的作用。我在Eclipse中删除了这些项目,然后重新导入。 - cs94njw
Eclipse Kepler 中没有效果。 - Zbyszek

3

在查看其他答案后,我找到了一种更简单的方法。

我只是在.classpath文件中删除所有包含变量的行(使用eclipse编辑),然后使用maven -> 更新项目,没有出现错误。


这对我有用,还需要删除包含Maven jar的“jar”行。 - dwjohnston

2

如果在使用Clover对项目进行代码覆盖率检测时,使用更新命令会导致此错误。

解决方法如下: 取消对需要更新的项目文件夹的代码覆盖率检测。 运行Maven更新,然后再次进行代码覆盖率检测。


0

我正在使用带有M2E 1.4.x的Eclipse 4.3.2(Kepler),并且多次遇到了这个问题!

在我的情况下,“mvn eclipse:eclipse”命令也会生成Checkstyle、PMD和Findbugs配置,因此“mvn eclipse:clean”对我没有帮助,因为它会再次删除所有这些配置文件。

对我来说最好的解决方案是删除所有“.classpath”文件:

find . -name ".classpath" -delete

然后将项目导入到Eclipse中。


0

我尝试了这里和类似问题中提到的所有步骤,但无法解决这个问题。我既不能解决问题,也不能更新我的m2eclipse。所以我安装了Eclipse Luna,它解决了我的问题...虽然这意味着我必须花费约45分钟来配置我的工作空间中的所有环境。


0

从 Kepler 升级到 Luna 对我起作用了。

我只是添加了一些支持 Java 1.8 的组件。看起来它们并不像我想象的那样兼容或者我混合使用了错误的组件。这真的带来了很多问题。尝试更新系统时报告了错误,因为它们无法满足某些依赖项。Maven 升级也没有起作用。试了很多方法。

所以,如果没有理由避免升级,只需将 luna 存储库添加到可用软件站点中(Luna http://download.eclipse.org/releases/luna/),然后“检查更新”。最好将所有组件版本保持一致,并且有一些新的不错功能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接