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 в других очень похожих местах, и я попробовал рекомендации для них, просто для этого, но никто из них не работает.
Я в конце концов с этой проблемой. Помоги мне, Оби-Ван Кеноби, ты моя единственная надежда.
Ответы
Ответ 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
.