【问题标题】:Maven package works but Intellij's build failsMaven 包有效,但 Intellij 的构建失败
【发布时间】:2013-08-21 10:19:39
【问题描述】:

我有一个 JDK 1.7 项目,它对我的​​ maven 存储库中的本地 jar 具有 maven 依赖项。

我无法使用 Intellij 构建项目,错误是找不到符号(该符号是从本地 jar 导入包的类)

但我可以使用 'mvn package' 成功构建项目。

我花了很多时间寻找解决方案,我已经做过的事情:

  • 缓存无效
  • 'mvn clean install'本地jar依赖
  • 在 Intellij 的 maven 配置中标记为“自动加载快照”
  • 在 Intellij 中重新引入 maven
  • 同步

这个错误发生在我之前几次,但通常只是关闭 Intellij 和/或执行“mvn clean install”就可以了。

请帮忙。

【问题讨论】:

  • 您的 Maven 存储库是否正确配置了 IntelliJ ?
  • 是的,存储库的路径是我使用“mvn install”时更新的路径
  • 本地 jar 是 jar 的快照还是发布版本?如果 jar 是快照,则必须在 intellij Maven 设置中选中“始终更新快照”以强制更新 ide。
  • 是的,这是一个快照,我已经标记了该选项。但仍然没有任何改变:(
  • 在设置的编译器部分,是否选中了“使用外部构建”?并且在Use external build中,“Rebuild module on dependency change”选项也被勾选了?

标签: java scala maven intellij-idea


【解决方案1】:

我知道这已经晚了,但执行 mvn idea:idea 可以解决问题。

该命令会重新生成关键的 IntelliJ IDEA 文件:iprimliws,从而将它们与您的 pom.xml 重新对齐。

文档:https://maven.apache.org/plugins/maven-idea-plugin

该插件已停用,但(截至 2021 年 6 月 5 日)仍然像魔术一样工作 :)

【讨论】:

  • 这应该是公认的答案,因为它提供了一个实际的解决方案,而不仅仅是它失败的原因。我所有的updoots!
  • mvn idea:idea 没有保持更新,也不是由 jetbrains 维护
  • 在那之后我不得不重新运行 mvn install
  • 你把我从绝望中拯救了出来。我想吻你
  • 为什么 intellij 不能在这么多年后独自做到这一点。每次导入新项目时,我仍然需要运行此命令! SMH
【解决方案2】:

我也遇到了同样的问题。 从终端使用 maven 命令 (mvn clean install -DskipTests=true) 项目已成功构建。但在 intellij 中无法识别 jar spring 库文件。

使用以下步骤修复它:

  1. 关闭您的 IDE(intellij)
  2. 删除 sudo "rm -rf //.idea/" (/home/user/projects/test_proj/.idea/)
  3. 再次打开您的IDE。它将重新索引您的文件并解决问题

RCA:我怀疑这是由于 linux 中的权限问题而发生的

【讨论】:

    【解决方案3】:

    此错误的另一个原因是在 pom.xml 文件中使用了依赖项,例如 lombok。如果你在java文件中使用了@Data等lombok注解,那么你需要在intellij中安装lombok插件来摆脱IDE中的“错误”。

    【讨论】:

      【解决方案4】:

      我遇到了同样的问题。我可以在终端中成功运行mvn clean package 命令,但无法从 IntellJ 运行或构建。我做了以下操作,但都失败了。

      • 缓存无效
      • 在终端中运行 mvn clean packagemvn clean package
      • 在 Intellij 的 maven 配置中标记为“自动加载快照”
      • 同步或重新导入
      • 删除所有与 IntellJ 相关的文件,如 .idea 并重新导入项目
      • 删除所有依赖文件,然后运行mvn clean package
      • 切换 Java 版本或在 IntellJ 中使用嵌入式 Java
      • 运行mvn idea:idea
      • 更改 Maven 主页
      • 在模块选项卡中将 src 目录标记为源

      我做的最后一件事是: 删除项目中的.idea和.iml,删除所有依赖文件,然后从电脑中删除IntellJ。重新安装 IntellJ 后,我的项目构建成功。我希望我能有更好的方法来解决这个问题。

      【讨论】:

        【解决方案5】:

        对于 Mac 中的我,我通过从我的计算机中删除 Intellij Idea Appication 并删除缓存文件来解决它 ~/库/应用程序支持/JetBrains/IntelliJIdea2020.1 ~/Library/Caches/JetBrains/IntelliJIdea2020.1

        然后重新安装,打开我的项目,构建成功!

        【讨论】:

          【解决方案6】:

          Maven ReImport 为我工作,如下所示...

          【讨论】:

          • IntelliJ IDEA Ultimate 2020.3 具有“重新加载项目”并且有效。
          【解决方案7】:

          对我来说,问题在于我在 IntelliJ Java 编译器设置中选择了 Ajc 编译器。一旦我将它改回 Javac 一切正常。

          【讨论】:

            【解决方案8】:

            就我而言,问题出在不同的 Project Java SDK 版本中。当我从终端构建项目时,maven 使用 Java 8,当我从 IDEA 构建时,它使用 Java 11。

            转到文件 > 项目结构...并在项目设置中将项目 SDK 设置为您需要的版本。

            【讨论】:

              【解决方案9】:
              1. 在 maven 选项卡中单击 + 并选择 pom.xml
              2. 从 maven 选项卡单击下载源和文档
              3. 在项目结构上(您可以在其中查看项目文件/目录)右键单击您要构建的项目并选择构建模块项目名称。
              4. 从选项卡运行 - 使用 + 添加应用程序编辑配置并填写以下字段: 一世。主类-从项目选项卡中手动选择选择主类 ii.使用模块的类路径 - 选择应用程序名称 iii.缩短命令行 - 类路径文件
              5. 现在只需运行该应用程序。

              【讨论】:

                【解决方案10】:

                如果配置了错误的模块,请执行以下步骤:

                • 转到项目设置
                • 转到模块
                • 删除不应该存在的模块

                【讨论】:

                  【解决方案11】:

                  还有一个没有提到的可能性。如果您从com.sun.* 导入库。也会导致这个问题。

                  程序在 ide 中运行时有效,因为com.sun.* 中的这些类都在jre/lib 目录下,运行时会被加载。但是当您运行mvn package 时,由于自java 1.6 以来oracle 的限制,这些库将无法访问(这些库在某种程度上已被弃用)。为了解决这个问题,你可以添加

                  <build>
                          <plugins>
                              <plugin>
                                  <groupId>org.apache.maven.plugins</groupId>
                                  <artifactId>maven-compiler-plugin</artifactId>
                                  <version>2.3.2</version>
                                  <configuration>
                                      <source>1.8</source>
                                      <target>1.8</target>
                                      <encoding>UTF-8</encoding>
                                      <compilerArguments>
                                          <verbose />
                                          <bootclasspath>C:/Program Files/Java/jdk1.8.0_161/jre/lib/rt.jar</bootclasspath>
                                      </compilerArguments>
                                  </configuration>
                              </plugin>
                          </plugins>
                      </build>
                  

                  记得用你自己的rt.jar路径替换cootclasspath

                  您可以搜索Access restriction: The type XXX is not accessible due to restriction on required library 了解更多详情。

                  【讨论】:

                    【解决方案12】:

                    删除.idea文件夹并关闭IDE

                    再次打开 IDE 并导入将重新导入的项目,因为我们之前删除了 .IDEA 文件夹

                    检查外部库模块,如果它没有填充所需的依赖项,则检查 IDE 中的 maven settings.xml 位置是否正确

                    【讨论】:

                      【解决方案13】:

                      我遇到了同样的问题。 前往:

                      文件 -> 项目结构 -> 模块。选择您的模块并在“Dependencies”选项卡下,确保添加了所有 maven 依赖项。

                      为了确保您在创意编辑器中收到类似问题的警告:从“依赖项”选项卡切换到“源”并添加将您的 src 标记为源。

                      【讨论】:

                        【解决方案14】:

                        从命令提示符执行命令:mvn idea:idea 并右键单击项目 -> 从菜单中重新导入依赖项

                        【讨论】:

                          【解决方案15】:

                          这个简单的过程大约需要 1 分钟,没有任何风险。

                          • 关闭 IntelliJ
                          • 删除 IntelliJ 特定文件,如 .idea/*、*.iml、.settings 等。建议也删除 POM,但恕我直言,这不是必需的。
                          • 然后使用以下方法在 IntelliJ 中重新创建项目:文件 > 新建 > 来自现有源的项目 > 按照步骤操作。请注意不要导入多个配置文件或(相同的项目)。

                          【讨论】:

                            【解决方案16】:

                            如果您使用的是 gradle ,请尝试以下命令。这解决了我的问题

                            gradle cleanIdea idea

                            【讨论】:

                              【解决方案17】:

                              我没有高兴地尝试了上面的一切。然而,我做了一件事最终让它发挥作用:

                              我去了 C:\Users\.IntellijJIdea2018.2 并删除了整个文件夹。

                              它会删除 IntelliJ 的所有设置和缓存。我不得不从头开始重新导入我的项目,但之前简单的删除和重新导入不起作用,但这终于让它再次工作了。

                              【讨论】:

                                【解决方案18】:

                                我关闭了项目并通过单击根 pom(不仅仅是文件夹,还有 pom 文件本身)再次导入它。

                                【讨论】:

                                  【解决方案19】:

                                  我尝试使缓存无效,将 Maven 更改为已安装的版本,但没有任何效果。

                                  关闭并重新创建一个新项目解决了它。

                                  【讨论】:

                                    【解决方案20】:

                                    在我的情况下,我的 iml 不同步,所以我删除了特定模块的 iml,然后在 maven 选项下选择 unignore project 以重新创建 iml

                                    【讨论】:

                                      【解决方案21】:

                                      我发现我的 .iml 文件和 pom 存在冲突并导致了问题。

                                      【讨论】:

                                      • 我也有类似的问题。我有构建日期插件的配置。此插件需要具有此值“${maven.build.timestamp}”的 buildDate 属性。 IntelliJ 在解析这个 pom 时遇到问题,并且 iml 文件没有与 pom 正确同步。当我评论属性 buildDate 同步工作正常。
                                      • 关于如何解决这个问题的任何提示?我只想让 Intellij 工作,似乎 Netbeans 运行任何项目无论如何......这是一个完整的生产力破坏者:( ...
                                      • 我不知道你的修复是否相同,但我不得不退出并重新加载项目以强制 IntelliJ 更新它的 IML 文件(它没有像我一样从 pom.xml 刷新它) d 添加了一些新的依赖项)
                                      • “如何”比“为什么”更有用。请添加一些有关您如何解决此问题的详细信息。
                                      • 我关闭了 IntelliJ。然后,我删除了C:\Users\USERNAME\.IntelliJIdea2017.2\system。之后,我在源目录中做了一个git clean -xdf 以删除所有非版本控制的文件,并再次导入该项目。现在就像一个魅力。
                                      【解决方案22】:

                                      这里的其他答案中有许多有价值的提示,只是想添加解决我的问题的解决方案。

                                      我们最近开始使用私有 Maven 存储库,并且在调用 Maven cmdline 时总是使用mvn -s settings.xml。 IntelliJ 当然不知道私有仓库,所以它需要一点帮助。

                                      转到设置 -> 构建、执行、部署 -> 构建工具 -> Maven 并覆盖“用户设置文件”选项。

                                      【讨论】:

                                        【解决方案23】:

                                        IDE 在构建时使用它自己的 Maven 捆绑副本。如果终端上的 maven 与 IDE 不同,那么您希望它们相同。

                                        转到(在 Mac 上)- IntelliJ Idea -> 首选项 -> 构建、执行、部署 -> 构建工具 -> Maven。设置 Maven 主目录的路径 要从终端查找您使用的 Maven 路径,请键入命令 mvn -version,这应该会打印出包括 dir 路径在内的大量详细信息。把它放在 Maven 主目录中。

                                        为安全起见,您也可以对 JDK 位置执行相同操作

                                        ==== 可能导致此类问题的其他一些事情 ===

                                        如果做 mvn package 或 mvn clean install 构建,那么它必须对 IDE 缓存做一些事情。 除其他外,这通常有助于解决此类错误 -->

                                        文件 -> 使缓存无效

                                        【讨论】:

                                          【解决方案24】:

                                          我知道我在这个对话中已经很晚了,但只是想发布这个以防其他人遇到这个问题。发生这种情况的另一个原因是因为您没有引用正确的存储库。 Intellij 默认选择捆绑版本的 jar,而不是来自您自己的 maven 存储库的版本。确认连接的存储库是正确的。

                                          【讨论】:

                                          • 如果您使用自制软件安装了 maven,正确设置 maven 主目录(例如)/usr/local/Cellar/maven/3.5.4/libexec 可以解决此问题
                                          【解决方案25】:

                                          添加更多提示,因为这是我遇到类似问题(项目构建在 mvn,而不是 IntelliJ)时在搜索中出现的第一件事,以防它可能对其他人有所帮助。

                                          当我有这个时,它在 Windows 和 Mac 上是不同的修复程序。

                                          在 Mac 上,我进入 ItellijIDEA / Preferences / Build, Execution, Deployment / Build Tools / Maven / Maven Home Directory 并将其设置为使用我单独安装的 Maven 而不是捆绑的 Maven。所有构建问题都消失了。

                                          在 Windows 上,我在 idea.log 中看到与 SSL 相关的异常,并且我的项目树在 External Libraries 分支下只有 Java。从其他站点来看,听起来 IntelliJ 使用自己的私有 JDK 而不是系统 JDK(即使在我的情况下,我已经安装了完全相同的 JDK 版本)。我的系统 JDK 在公司 Nexus 服务器的密钥库中安装了 IntelliJ 私有 JDK 没有的证书,因此当它尝试从 Nexus 获取文件时会引发异常。为此,解决方案是退出 IntelliJ,设置一个名为 IDEA_JDK 的环境变量以指向我已经安装的具有正确证书的 JDK,然后重新启动 IntelliJ。所有构建问题都消失了。

                                          【讨论】:

                                          • 最新 IntelliJ 2016.3.5 在 Linux 上的相同问题 - 首先它工作,然后在一些 POM 更改后它变得不同步,只有切换 Maven impl 有帮助,所以也可能只是切换Maven 触发 IntelliJ 中的更新,导致项目再次同步...
                                          • 你很好。这解决了我的问题。谢谢
                                          【解决方案26】:

                                          我遇到了同样的问题。我在 Idea 设置中将 maven 版本从 3.0.5 更改为 3.0.4,现在一切正常。不知道为什么这对我有帮助。

                                          【讨论】:

                                            【解决方案27】:

                                            尝试删除所有 .iml 和您的 POM。 然后将您的 POM 再次复制并粘贴到您的项目中,然后重新打开并重新导入它。

                                            【讨论】:

                                            • 也许在删除任何东西之前尝试在 Maven 项目视图中“重新导入所有”
                                            • 我也不得不删除.iml,重新导入maven没有修复它。
                                            • @masoodg,非常感谢!你救了我的一天!只是重新导入没有帮助。按照你的指示,它就像一个魅力。
                                            • 关闭 Intellij,从项目根目录中删除 *.iml*.ipr*.iws 文件,然后重新打开 Intellij 为我修复了它
                                            • 哇。伟大的。删除 .iml 对我有用。
                                            【解决方案28】:

                                            “symbol cannot be found”表示intellij无法解析“依赖”。因此,您可以通过单击“分析”->“分析依赖关系”然后选择“分析范围”来强制“依赖关系分析”

                                            【讨论】:

                                              猜你喜欢
                                              • 2018-09-25
                                              • 1970-01-01
                                              • 1970-01-01
                                              • 1970-01-01
                                              • 1970-01-01
                                              • 2021-10-09
                                              • 1970-01-01
                                              • 1970-01-01
                                              • 2010-11-26
                                              相关资源
                                              最近更新 更多