【问题标题】:Eclipse throws NullPointerException during Maven updateEclipse 在 Maven 更新期间抛出 NullPointerException
【发布时间】:2013-11-04 23:18:29
【问题描述】:

两天来,我一直在与内部 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,并且我已经尝试了针对它们的建议,只是为了它,但它们都不起作用。

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

【问题讨论】:

  • 项目是否已经有 Eclipse .project.classpath 文件?您可以发布 POM 的坐标和父部分吗? (无论如何,这是一个 M2E 错误,应按此提交。)
  • 任何时候我在 Eclipse(对于 Java EE)中看到这个都是因为我安装了 M2E 而不是 M2E-WTP。你在朱诺看到了这一点。我猜你还没有使用 Kepler,因为它内置了 Maven 支持。

标签: java eclipse maven spring-tool-suite


【解决方案1】:

这是我修复它的方法:

  1. 从工作区中删除了项目
  2. 删除 .classpath.project.settings 文件夹
  3. 重新导入项目

【讨论】:

    【解决方案2】:

    我非常确定问题与 maven 插件无关;但如果是的话,如果你在将项目导入 eclipse 之前运行mvn eclipse:eclipse,我会徘徊,如果你这样做并且你正在使用 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 项目,它工作正常。

    祝你好运!

    【讨论】:

      【解决方案3】:

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

      1. 关闭日食
      2. 转到 .metadata/pluigns 文件夹下的 eclipse 工作区文件夹,识别所有 m2e 插件
      3. 删除它们
      4. 从未损坏的工作区复制相关插件,或者从 您的机器或任何团队成员的机器
      5. 重启eclipse

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

          好的,我遇到了同样的问题,但原因更模糊。

          我将pluginExecution 用于aspectj-maven-plugin,在尝试解决另一个maven 问题的过程中,我已注释掉<action><execute><execute></action>

          这导致nullpointerexception

          【讨论】:

            【解决方案6】:

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2023-01-26
              • 2015-03-28
              • 1970-01-01
              • 1970-01-01
              • 2017-01-26
              • 1970-01-01
              • 2015-09-17
              相关资源
              最近更新 更多