Maven 包可以工作,但 Intellij 的构建失败了

我有一个 JDK 1.7项目,其中 maven 依赖于我的 maven repo 中的一个本地 jar。

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

但是我可以使用‘ mvn package’成功地构建这个项目。

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

  • 无效缓存
  • ‘ mvn clean install’本地 jar 依赖项
  • 在 Intellij 的 maven 配置中标记为“ autoload 快照”
  • 在 Intellij 被重新引进的专家
  • 同步

这个错误以前也发生过几次,但通常只是关闭 Intellij 和/或执行“ mvn clean install”就可以解决这个问题。

请帮帮我。

91005 次浏览

我发现我的.iml 文件和 pom 文件之间存在冲突,导致了这个问题。

“无法找到符号”意味着 intellij 无法解决“依赖关系”。因此,您可以通过单击“分析”-> “分析依赖项”来强制“依赖项分析”,然后选择“分析范围”

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

我也有同样的问题。我已经在创意设置中将 Maven 的版本从3.0.5改为3.0.4,现在所有的工作都很好。不知道这对我有什么帮助。

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

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

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

在 Windows 上,我在 idea.log 中看到了与 SSL 相关的异常,我的项目树在外部库分支下只有 Java。从其他站点来看,IntelliJ 似乎使用自己的私有 JDK,而不是系统 JDK (尽管在我的例子中,我已经安装了完全相同的 JDK 版本)。我的系统 JDK 在公司 Nexus 服务器的密钥库中安装了 IntelliJ 私有 JDK 没有的证书,所以当它试图从 Nexus 获取文件时会抛出异常。为此,解决方案是退出 IntelliJ,设置一个名为 IDEA _ JDK 的环境变量,指向我已经安装的具有适当证书的 JDK,然后重新启动 IntelliJ。所有的构建问题都消失了。

我知道我来得有点晚了,但我只是想把这个贴出来,以防其他人碰到这个问题。发生这种情况的另一个原因是您没有引用正确的存储库。Intellij 在默认情况下选择一个 jar 的捆绑版本,而不是从您自己的 maven 存储库中选择一个。确认连接的存储库是正确的。

我知道这有点晚,但是执行 mvn idea:idea可以解决这个问题。

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

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

这个插件已经退役了,但仍然可以像魔术一样工作(截至2021年6月5日)

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

GOTO (在 Mac 上) IntelliJ Ideas-> Preferences-> Build,Execution,Deployment-> Build Tools-> Maven 要从终端查找 Maven 的路径,输入命令 mvn -version,它会打印出包括目录路径在内的一系列详细信息。放到 Maven 家庭目录

为了安全起见,还可以对 JDK 位置执行同样的操作

= = = = 可能引起这些问题的其他一些事情 = = =

如果使用 mvn 包或 mvn clean install 构建,那么它必须使用 IDE 缓存执行某些操作。 在其他方面,这个方法通常有助于解决这类错误—— >

文件-> 无效缓存

很多有价值的技巧在这里的其他答案,只是想添加的解决方案,工作 解决我的问题

我们最近开始使用一个私有的 Maven 存储库,并且在调用 Mavencmdline 时始终执行 mvn -s settings.xml。IntelliJ 当然不知道私人回购,所以它需要一点帮助。

转到 Settings-> Build,Execution,Deployment-> Build tools-> Maven 并覆盖“ User Settings file”选项。

enter image description here

Maven ReImport为我工作,如下..。

enter image description here

在我的例子中,我的 iml 不是同步的,所以我删除了特定模块的 iml,然后在 maven 选项下选择 unillerproject 来重新创建 iml

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

关闭并重新创建一个新项目解决了这个问题。

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

我毫无乐趣地尝试了以上所有的方法,但最终我还是做了一件事:

我转到 C: Users. IntellijJIdea2018.2,然后删除了整个文件夹。

它删除 IntelliJ 的所有设置和缓存。我不得不从头重新导入我的项目,但一个简单的删除和重新导入以前从来没有工作过,但这最终让它再次工作。

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

gradle cleanIdea idea

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

  • 关闭情报室
  • 删除特定于 IntelliJ 的 仅此而已文件,如。主意/* ,* 。我..。设定等。建议也删除 POM,但恕我直言,这是没有必要的。
  • 然后使用以下步骤在 IntelliJ 中重新创建项目: 档案 > 新建 > 来自现有资源的项目 > 。注意不要导入多个配置文件或(相同的项目)。

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

我也有同样的问题。 浏览:

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

为了确保在创意编辑器中提醒您类似的问题: 从“ Dependency tab”切换到“ Source”,并添加标记 src 作为 source。

删除.idea 文件夹并关闭 IDE

再次打开 IDE 并导入将执行新导入的项目,因为。IDEA 文件夹是我们早些时候删除的

检查外部库模块,如果它没有填充所需的依赖项,那么检查 IDE 中是否正确地给出了 maven setings.xml 位置

还有一种可能性没有被提及。如果从 com.sun.*导入库。也会引起这个问题。

程序在 ide 中运行时可以正常工作,因为 com.sun.*中的这些类都在 jre/lib目录中,在运行时将加载它们。但是,当您运行 mvn package时,由于 Oracle 自 java 1.6以来的限制(这些库在某种程度上已被弃用) ,这些库将无法访问。要解决此问题,可以添加

<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路径替换 cootclassspath

您可以在 Access restriction: The type XXX is not accessible due to restriction on required library中搜索更多细节。

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

  • 转到 项目设置
  • 转到 模组
  • 删除不应该存在的模块
  1. 从 maven 选项卡单击 + 并选择 pom.xml
  2. 从 maven 选项卡单击下载源代码和文档
  3. 在项目结构(您可以在其中查看项目文件/目录)上,右键单击您试图构建的项目,并选择 Build Module Project Name。
  4. 选项卡 Run-Edit Configuration with + add Application and fill the following fields: 手动从项目选项卡中选择主类 使用模块的类路径-选择应用程序名称 缩短命令行类路径文件
  5. 现在只要运行应用程序。

在我的案例中,问题出现在不同的 ProjectJavaSDK 版本中。当我从终端构建项目时,Maven 使用 Java8,而当我从 IDEA 构建项目时,它使用 Java11。

转到文件 > 项目结构... 和在项目设置设置项目 SDK 的版本,你需要的。

对我来说,问题是我在 编译器设置中选择了 Ajc 编译器。一旦我把它改回 贾瓦克一切工作正常。

对我来说,在 Mac 中,我通过从电脑中删除 Intellij 创意应用程序并在 ~/Library/Application Support/JetBrains/IntelliJIde2020.1 ~/Library/Cache/JetBrains/IntelliJIde2020.1

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

我也遇到了同样的问题。我可以成功地在终端运行 mvn clean package命令,但不能运行或构建从智能。我做了以下几个动作,但都失败了。

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

我做的最后一件事奏效了: 删除。主意和。在项目中使用 iml,删除所有依赖文件,然后从计算机中删除 IntelJ。在重新安装了智能 J 之后,我的项目成功地构建了。我希望我能有更好的办法来解决这个问题。

这个错误的另一个原因是使用了依赖项,比如 pom.xml 文件中的 lombok。如果在 java 文件中使用 lombok 注释,比如@Data,那么需要在 intellij 中安装 lombok 插件,以消除 IDE 中的“错误”。

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

通过以下步骤修复:

  1. 关闭 IDE (intellij)
  2. 删除 sudo“ rm-rf/< your _ project _ location >/. idea/”(/home/user/Projects/test _ proj/. idea/)
  3. 再次打开您的 IDE。它将重新索引您的文件,问题将得到解决

RCA: 我怀疑这是由于 Linux 中的许可问题

我也遇到过类似的问题,我意识到我的 maven 依赖关系在 intellij 中没有更新。解决方案是在 Maven 窗口中重新加载所有 Maven 项目,这将强制 intellij 重新加载 Maven 依赖项。enter image description here

当您的 IntelliJ IDE 的系统 JVM/Maven 配置和 JVM/Maven 配置不匹配时,就会出现这种问题。我也面临着同样的问题。我成功地运行了 "mvn clean install"命令,但是 IntelliJ Build 失败了。

我也尝试用 "mvn idea:idea"命令,但它不工作,因为 "idea"插件不再存在。它已经退役了。

最后,我发现我的 MAVEN_HOME路径和 IntelliJ 缺省 maven 设置之间不匹配。因此,在修正了 IntelliJ 默认的 maven 设置之后,我的问题得到了解决。

您可以在以下位置找到设置。 转到 文件-> 设置-> 在 IntelliJ 中构建、执行和部署频道。

enter image description here

确保 “用户设置文件”「本地储存库」的路径与环境变量 “ MAVEN _ Home”“ M2 _ 家”的路径相同。

我也有过类似的问题,下面的选项不起作用。

  1. invalidating cache and restart到文件菜单
  2. mvn idea:idea

什么解决了这个问题:

  1. 彻底关闭 IntelliJ
  2. 从终端,在存储库上执行 git clean -xdf。这将删除所有生成的类和 idea/iml/ipr 文件。其他 VCS 应该有类似的宏。
  3. 运行 mvn clean package
  4. idea .打开 IntelliJ

关键是关闭 intellij 然后从终端执行这些步骤。IntelliJ 仍然在某处缓存旧文件,如果尝试从 IntelliJ 内部。这是 IntelliJ IDEA 2021.3.2(终极版)版本。

这似乎是 intellij 在识别本地的 maven jar 时出现的问题 并检查是否有任何 maven 库显示为红色(意味着它没有被构建标识)

现在,无论你在红色的地方看到他们删除使用下面的分钟(-)图标 enter image description here

现在使用下面的加号(+)图标从系统手动添加它们 enter image description here

现在就构建,它应该能够工作。