Eclipse在Maven更新期间抛出NullPointerException

Rob*_*ker 14 java eclipse maven spring-tool-suite

我已经打了两天内部Eclipse错误了.我正在运行Eclipse的最新Spring Tool Suite版本,并且我试图导入一系列现有的Maven项目.每当我这样做时,Eclipse会抛出NullPointerException,但错误日志视图中没有可用的堆栈跟踪.如果我指示Eclipse更新Maven项目(Maven> Update Project),我会再次获得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)
Run Code Online (Sandbox Code Playgroud)

这是我尝试过的:

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

这个问题让我斗智斗勇.帮助我,欧比旺克诺比,你是我唯一的希望.

gen*_*nzo 6

这是我为修复它所做的:

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


小智 5

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

PS.这似乎是一个已知的bug日食(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 =铬和espv = 210&es_sm = 91,即= UTF-8) ;尝试下载最后的Eclipse版本,我使用的是开普勒的工作,我在行家/春天项目的工作,它工作正常.

祝好运!


Rob*_*ker 2

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