【问题标题】:Intellij IDEA 2017.2 cannot resolve symbolIntellij IDEA 2017.2 无法解析符号
【发布时间】:2017-07-28 14:53:15
【问题描述】:

在 Intellij IDEA 2017.2 中,我正在尝试导入一个现有的多模块 Maven 项目,该项目通过 Maven 在 IDE 外部构建良好。导入完成后,我注意到在其中一个 Maven 子模块中,一个符号未解析,让我们将此子模块称为 submodule-problem。未解析的符号是在另一个子模块中定义的类,我们称之为 submodule-other。问题是在 submodule-problem 中,在 submodule-other 级别的其他子模块中定义的其他类都可以找到(这些子模块在 submodule-problem 的 pom 文件中定义为依赖项)。此外,submodule-other 没有在 submodule-problem 的 pom 文件中声明为依赖项。但我不应该这样做,因为正如我提到的 mvn clean install -Dmaven.test.skip=true 工作正常。 mvn test-compile 也是如此。我正在使用最新的 Maven 3.5.0,并已指示 IDEA 在项目的 Maven 设置中对上述导入的项目使用相同的版本。注意:我无权显示代码或相关 POM 文件。


到目前为止,我尝试解决的问题是:

  1. 多次使缓存无效并重新启动 IDEA
  2. 多次重新导入为 Maven 项目
  3. 从上述项目中删除 .idea 文件夹和所有 *.iml 文件并重新导入为 Maven 项目,几次
  4. 删除 IDEA 的系统首选项文件夹并重试之前的所有步骤多次(这一步很痛苦,因为我必须安装所有插件并重新配置 IDE 设置)
  5. 将同一个项目导入Eclipse-Oxygen,发现导入项目没有任何问题。

【问题讨论】:

  • 您是否在父 pom 的 部分中声明了所有模块?
  • @ggradnig 是的。所有相关模块都在父 pom 的 部分中声明。
  • 你写的 submodule-other 不是 submodule-problem的直接依赖。您是否尝试将其添加为直接直接依赖项以查看这是否有效?
  • @CrazyCoder 我刚试过。同样的问题。

标签: java maven intellij-idea


【解决方案1】:

我已经解决了这个问题。事实证明,IntelliJ IDEA IDE 没有任何问题(至少我认为没有)。在生产中,我的顶级项目是另一个父 Maven 项目的子项目,因此它的 pom 文件中的版本使用 ${project.version} 引用父版本。而在开发中,它是父母,较低级别的项目是它自己的孩子。因此,在所有 pom.xml 文件中,我的顶级项目使用${project.version} 来指代生产父级,以及在他们将我的顶级项目称为父级的子 pom 中,我将其更改为就像 1.0.0-SNAPSHOT 这样的文字,所有问题都消失了,我什至不必将项目重新导入 IDE。

现在,正如我在原帖中提到的,即使不必这样做,Maven 构建项目也没有问题。如果有人知道,我很想知道为什么。也许 IDE 需要我这样做是因为它试图强制执行一些最佳实践?通过观看idea.log,我得到了解决方案,它抱怨一些 POM 无效,而且确实在这些 pom 文件中,版本标签有一个红色波浪下划线。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-21
    • 1970-01-01
    • 1970-01-01
    • 2015-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多