16

两天来,我一直在与内部 Eclipse 错误作斗争。我正在运行 Eclipse 的最新 Spring Tool Suite 版本,并且我正在尝试导入现有 Maven 项目的集合。每当我这样做时,Eclipse 都会抛出 NullPointerException,但错误日志视图中没有可用的堆栈跟踪。如果我指示 Eclipse 更新 Maven 项目(Maven > 更新项目),我会再次收到 NullPointerException。这一次,错误日志视图报告了以下堆栈跟踪:

java.lang.NullPointerException
    at org.eclipse.wst.common.componentcore.internal.resources.VirtualResource.getProjectRelativePaths(VirtualResource.java:119)
    at org.eclipse.wst.common.componentcore.internal.resources.VirtualFile.getUnderlyingFiles(VirtualFile.java:104)
    at org.eclipse.wst.common.componentcore.internal.resources.VirtualFile.getUnderlyingResources(VirtualFile.java:93)
    at org.eclipse.wst.common.componentcore.internal.resources.VirtualResource.exists(VirtualResource.java:88)
    at org.eclipse.jst.common.internal.modulecore.util.ManifestUtilities.getNonBinaryComponentManifest(ManifestUtilities.java:124)
    at org.eclipse.jst.common.internal.modulecore.util.ManifestUtilities.getManifest(ManifestUtilities.java:81)
    at org.eclipse.jst.common.internal.modulecore.util.ManifestUtilities.getManifestClasspath(ManifestUtilities.java:147)
    at org.eclipse.jst.j2ee.componentcore.J2EEModuleVirtualComponent.getManifestClasspath(J2EEModuleVirtualComponent.java:248)
    at org.eclipse.jst.j2ee.componentcore.J2EEModuleVirtualComponent.calculateManifestReferences(J2EEModuleVirtualComponent.java:368)
    at org.eclipse.jst.j2ee.componentcore.J2EEModuleVirtualComponent.cacheManifestReferences(J2EEModuleVirtualComponent.java:360)
    at org.eclipse.jst.j2ee.componentcore.J2EEModuleVirtualComponent.getReferences(J2EEModuleVirtualComponent.java:176)
    at org.eclipse.jst.j2ee.componentcore.J2EEModuleVirtualComponent.getReferences(J2EEModuleVirtualComponent.java:214)
    at org.eclipse.jst.j2ee.componentcore.J2EEModuleVirtualComponent.getReferences(J2EEModuleVirtualComponent.java:207)
    at org.eclipse.m2e.wtp.WebProjectConfiguratorDelegate.configureClasspath(WebProjectConfiguratorDelegate.java:386)
    at org.eclipse.m2e.wtp.WTPProjectConfigurator.configureClasspath(WTPProjectConfigurator.java:107)
    at org.eclipse.m2e.jdt.internal.DefaultClasspathManagerDelegate.populateClasspath(DefaultClasspathManagerDelegate.java:61)
    at org.eclipse.m2e.jdt.internal.BuildPathManager.getClasspath(BuildPathManager.java:253)
    at org.eclipse.m2e.jdt.internal.BuildPathManager.getClasspath(BuildPathManager.java:363)
    at org.eclipse.m2e.jdt.internal.BuildPathManager.getClasspath(BuildPathManager.java:343)
    at org.eclipse.m2e.jdt.internal.BuildPathManager.getClasspath(BuildPathManager.java:371)
    at org.eclipse.m2e.jdt.internal.BuildPathManager.updateClasspath(BuildPathManager.java:191)
    at org.eclipse.m2e.jdt.internal.BuildPathManager.mavenProjectChanged(BuildPathManager.java:180)
    at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.notifyProjectChangeListeners(ProjectRegistryManager.java:746)
    at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.applyMutableProjectRegistry(ProjectRegistryManager.java:865)
    at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.refresh(ProjectRegistryManager.java:289)
    at org.eclipse.m2e.core.internal.project.ProjectConfigurationManager.updateProjectConfiguration0(ProjectConfigurationManager.java:369)
    at org.eclipse.m2e.core.internal.project.ProjectConfigurationManager$2.call(ProjectConfigurationManager.java:316)
    at org.eclipse.m2e.core.internal.project.ProjectConfigurationManager$2.call(ProjectConfigurationManager.java:1)
    at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.executeBare(MavenExecutionContext.java:161)
    at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:137)
    at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:89)
    at org.eclipse.m2e.core.internal.embedder.MavenImpl.execute(MavenImpl.java:1301)
    at org.eclipse.m2e.core.internal.project.ProjectConfigurationManager.updateProjectConfiguration(ProjectConfigurationManager.java:313)
    at org.eclipse.m2e.core.ui.internal.UpdateMavenProjectJob.runInWorkspace(UpdateMavenProjectJob.java:77)
    at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:38)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)

这是我尝试过的:

  • 我吹走了我的工作空间并创建了一个新的工作空间。多次。
  • 我已经炸毁了我的 Maven 存储库,以便重新创建它。
  • 我已经重新安装了 Spring Tool Suite。
  • 我试过要求 Eclipse 更新 Maven 存储库。
  • 我已经检查了本地 SVN 存储库中的合并冲突。(没有;这是一个全新的主干分支,刚刚签出。)
  • 我检查了 Eclipse 中的 Synchronize 视图,看看它是否注意到任何差异。(Eclipse 无法识别任何可同步的项目。)
  • 我在 Google 上搜索了 VirtualResource.getProjectRelativePaths() 中发生的 NullPointerExceptions。我在其他非常相似的地方发现了 NullPointerExceptions,并且我已经尝试了它们的建议,只是为了它,但它们都不起作用。

我对这个问题束手无策。帮助我,欧比旺·克诺比,你是我唯一的希望。

4

6 回答 6

6

这是我为解决它所做的:

  1. 从工作区中删除项目
  2. 删除.classpath,.project.settings文件夹
  3. 重新导入项目
于 2013-12-18T13:01:37.030 回答
5

我非常确定问题与 maven 插件无关;但如果是的话,如果你mvn eclipse:eclipse在将项目导入eclipse之前运行a,我会徘徊,如果你这样做并且你使用的是maven 3,我已经检查过maven插件还没有正确支持maven 3;所以我鼓励你做一个mvn eclipse:clean,然后将该项目作为现有项目导入,然后从 Eclipse 中激活 maven 插件特性。我希望它有所帮助,

PS。它似乎是一个已知的 Eclipse 错误(https://www.google.com.uy/search?q=j2ee.componentcore.J2EEModuleVirtualComponent.getReferences(J2EEModuleVirtualComponent.java&oq=j2ee.componentcore.J2EEModuleVirtualComponent.getReferences(J2EEModuleVirtualComponent.java&aqs=chrome ..69i57.128j0j7&sourceid=chrome&espv=210&es_sm=91&ie=UTF-8) ; 尝试下载最后一个 eclipse 版本;我在工作中使用开普勒,我正在从事 maven/spring 项目,它工作正常。

祝你好运!

于 2013-11-04T23:37:07.757 回答
3

发生这种情况是因为您的 m2e 插件已损坏。要纠正,请按照以下步骤操作。

  1. 关闭日食
  2. 转到 .metadata/pluigns 文件夹下的 eclipse 工作区文件夹,识别所有 m2e 插件
  3. 删除它们
  4. 从您的机器或团队成员的任何一台机器上从未损坏的工作区复制相关插件
  5. 重启日食
于 2014-02-24T18:50:53.093 回答
2

正如 echinelli 所指出的,这确实是一个 Eclipse(或 STS)错误,但安装最新版本并不是解决办法,因为我已经安装了该版本。我已经安装了基于 Eclipse 4.x 的 STS;当我卸载它并转到 3.x 版本时,问题就消失了。

于 2013-11-05T17:10:58.867 回答
0

好的,我有同样的问题,原因更模糊。

在尝试修复我已注释掉的另一个 maven 问题的过程中,我一直pluginExecution使用它aspectj-maven-plugin<action><execute><execute></action>

这导致nullpointerexception.

于 2014-04-04T18:20:08.160 回答
0

我通过<build>在 POM 中添加带有“maven-compiler-plugin”工件的部分来解决。我注意到没有它,Eclipse 会抛出一个java.lang.NullPointerException.

于 2019-06-12T10:02:16.353 回答