java - Intellij IDEA 2017.2 无法解析符号

标签 java maven intellij-idea

在 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,发现项目导入没有任何问题。

最佳答案

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

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

关于java - Intellij IDEA 2017.2 无法解析符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45376556/

相关文章:

java - 是否有有助于构建交互式 shell 样式应用程序的良好 Java 库?

java - Maven Shade 插件 - NoClassDefFounderror

intellij-idea - 如何在 intellij 中获取 vuetify 样式标签自动完成

java - 在您已经写入输出缓冲区之后向响应添加 cookie 是否不正确?

java - dockerized java应用程序访问已通过docker部署在jupyterhub上的monetdb数据库

java - 将 View 对象放入通知 android

maven - java.lang.NoSuchMethodError : com. sun.xml.internal.ws.api.message.Message.getHeaders

eclipse - 无法解决此 maven/apache 错误

java - 为什么 Intellij-IDEA 会忽略我的 tomcat/conf/server.xml 上下文标记?

java - Intellij 不会报告从内部类内部访问局部变量并且需要将其声明为 Final