Подтвердить что ты не робот

Eclipse выбрасывает исключение NullPointerException во время обновления Maven

Я борюсь с внутренней ошибкой Eclipse в течение двух дней. Я запускаю последнюю версию Spring Tool Suite для Eclipse, и я пытаюсь импортировать коллекцию существующих проектов 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)

Вот что я пробовал:

  • Я сдул свое рабочее пространство и создал новый. Несколько раз.
  • Я удалил свой репозиторий Maven, чтобы он был повторно создан.
  • Я переустановил Spring Tool Suite.
  • Я пробовал попросить Eclipse обновить репозитории Maven.
  • Я проверил конфликты слияния в локальном хранилище SVN. (Их нет, это новая ветка из сундука, который недавно выписан.)
  • Я проверил представление Synchronize в Eclipse, чтобы узнать, не заметит ли он никаких различий. (Eclipse не может пройти достаточно далеко, чтобы распознать любые проекты, доступные для синхронизации.)
  • Я искал Google для NullPointerExceptions, происходящих в VirtualResource.getProjectRelativePaths(). Я нашел NullPointerExceptions в других очень похожих местах, и я попробовал рекомендации для них, просто для этого, но никто из них не работает.

Я в конце концов с этой проблемой. Помоги мне, Оби-Ван Кеноби, ты моя единственная надежда.

4b9b3361

Ответ 1

Как показало echinelli, это оказалось ошибкой Eclipse (или STS), но установка последней версии не является исправлением, так как я уже установил эту версию. Я установил STS на основе Eclipse 4.x; когда я удалил это и пошел к версии 3.x, проблема исчезла.

Ответ 2

Я уверен, что проблема не связана с плагином maven; но если это так, я блуждал, если вы запустили mvn eclipse:eclipse перед импортом проекта в eclipse, если вы это сделаете, и вы используете maven 3, я проверил, что плагин maven еще не поддерживает maven 3; поэтому я рекомендую вам сделать mvn eclipse:clean, а затем импортировать проект как существующий проект, а затем активировать природу плагина maven из eclipse. Надеюсь, это поможет,

PS. (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), попробуйте загрузить последнюю версию затмения, я использую kepler на работе, а я - m работает в проектах maven/spring, и он отлично работает.

Удачи!

Ответ 3

Вот что я сделал, чтобы исправить это:

  • Удалено проект из рабочей области
  • Удалите папку .classpath, .project и .settings
  • Reimport проект

Ответ 4

Это происходит потому, что ваши плагины m2e повреждены. Для исправления выполните следующие действия.

  • закрыть eclipse
  • Перейдите в папку рабочего пространства eclipse. В папке .metadata/pluigns определите все плагины m2e.
  • удалить их
  • скопируйте соответствующие плагины из поврежденного рабочего пространства, либо из вашей машине или от любого из членов вашей команды.
  • перезапустить eclipse

Ответ 5

Хорошо, у меня была такая же проблема с более неясной причиной.

Я использовал pluginExecution для aspectj-maven-plugin, и в ходе попытки исправить еще одну проблему с maven я прокомментировал <action><execute><execute></action>

Это приводит к nullpointerexception.

Ответ 6

Я решил добавить раздел <build> с артефактом "maven-compiler-plugin" в POM. Я заметил, что без него Eclipse выдает java.lang.NullPointerException.