eclipse - 为什么 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 没有为该错误提供任何上下文。
推荐阅读
- flutter - Flutter 动态类型参数
- azure - 来自门户的带有 app() 表达式的跨资源查询,“以下应用程序不再可用”
- python - 是否可以使用 BeautifulSoup 获取没有类或 id 的标签?
- matlab - MATLAB:查找对应列中的具体索引是否
- entity-framework - 我可以在 LINQ to SQL 中使用 CROSS APPLY 并检查其 SUM() 吗?
- python - 根据pandas中的两列数据计算平均值和平均值
- python - 如何从 itertools.permutations 中取出一个元素?
- typescript - 如何用 Jest 单元测试覆盖 TypeORM @Column 装饰器?
- regex - PostgreSQL 用正则表达式修剪文本字段(或其他)
- amazon-web-services - AWS DynamoDB | 如何查询两个日期之间的时间戳?