微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么Eclipse命中NPE来更新我的Maven项目?

如何解决为什么Eclipse命中NPE来更新我的Maven项目?

我正在尝试将Maven项目拆分为子模块。它可以在命令行上很好地构建,但是当导入eclipse时,过一会儿出现以下错误,然后我被迫重新导入项目。

项目结构为

在更新Maven项目时确定路径时,似乎Eclipse碰到了NPE。我从哪里去解决这个问题?

2020-10-20 15:23:12,368 [Worker-13: Updating maven profiles] WARN  o.e.m.c.p.c.AbstractLifecycleMapping - Could not update project my-legacy-app configuration
java.lang.NullPointerException: null
    at org.eclipse.m2e.jdt.internal.AbstractJavaProjectConfigurator.getProjectRelativePath(AbstractJavaProjectConfigurator.java:788) ~[na:na]
    at org.eclipse.m2e.jdt.internal.AbstractJavaProjectConfigurator.getotherResourceFolders(AbstractJavaProjectConfigurator.java:535) ~[na:na]
    at org.eclipse.m2e.jdt.internal.AbstractJavaProjectConfigurator.overlapsWithOtherResourceFolder(AbstractJavaProjectConfigurator.java:520) ~[na:na]
    at org.eclipse.m2e.jdt.internal.AbstractJavaProjectConfigurator.addResourceDirs(AbstractJavaProjectConfigurator.java:475) ~[na:na]
    at org.eclipse.m2e.jdt.internal.AbstractJavaProjectConfigurator.addProjectSourceFolders(AbstractJavaProjectConfigurator.java:341) ~[na:na]
    at org.eclipse.m2e.jdt.internal.AbstractJavaProjectConfigurator.configure(AbstractJavaProjectConfigurator.java:156) ~[na:na]
    at org.eclipse.m2e.core.project.configurator.AbstractLifecycleMapping.configure(AbstractLifecycleMapping.java:122) ~[na:na]
    at org.eclipse.m2e.core.internal.project.ProjectConfigurationManager.lambda$2(ProjectConfigurationManager.java:511) ~[na:na]
    at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.executeBare(MavenExecutionContext.java:179) ~[na:na]
    at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:153) ~[na:na]
    at org.eclipse.m2e.core.internal.project.ProjectConfigurationManager.updateProjectConfiguration(ProjectConfigurationManager.java:505) ~[na:na]
    at org.eclipse.m2e.core.internal.project.ProjectConfigurationManager.updateProjectConfiguration0(ProjectConfigurationManager.java:443) ~[na:na]
    at org.eclipse.m2e.core.internal.project.ProjectConfigurationManager.lambda$1(ProjectConfigurationManager.java:358) ~[na:na]
    at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.executeBare(MavenExecutionContext.java:179) ~[na:na]
    at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:153) ~[na:na]
    at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:101) ~[na:na]
    at org.eclipse.m2e.core.internal.embedder.MavenImpl.execute(MavenImpl.java:1370) ~[na:na]
    at org.eclipse.m2e.core.internal.project.ProjectConfigurationManager.updateProjectConfiguration(ProjectConfigurationManager.java:357) ~[na:na]
    at org.eclipse.m2e.core.internal.project.ProjectConfigurationManager.updateProjectConfiguration(ProjectConfigurationManager.java:343) ~[na:na]
    at org.eclipse.m2e.core.internal.project.ProjectConfigurationManager.updateProjectConfiguration(ProjectConfigurationManager.java:325) ~[na:na]
    at org.eclipse.m2e.profiles.core.internal.management.ProfileManager.updateActiveProfiles(ProfileManager.java:86) ~[na:na]
    at org.eclipse.m2e.profiles.ui.internal.actions.ProfileSelectionHandler$UpdateProfilesJob.runInWorkspace(ProfileSelectionHandler.java:320) ~[na:na]
    at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:42) ~[na:na]  

解决方法

最终我抓取了m2e的源代码并调试了我的Eclipse实例,在AbstractJavaProjectConfigurator.getProjectRelativePath()上设置了一个断点,以直接检查NPE的源。

最终导致原因是<directory>...</directory>元素中缺少<resource>...</resource>元素。我之前没有找到它,因为m2e / Eclipse没有为该错误显示任何上下文。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。