[英]Maven package works but Intellij's build fails
在我的 maven 存储库中,我有一个 JDK 1.7 项目,其中 maven 依赖于本地 jar。
我无法使用 Intellij 构建项目,出现找不到符号的错误(该符号是 class 从本地 jar 导入包)
但我可以使用“mvn package”成功构建项目。
我花了很多时间寻找解决方案,我已经做过的事情:
这个错误发生在我之前几次,但通常只是关闭 Intellij 和/或执行“mvn clean install”就可以了。
请帮忙。
我知道这已经晚了,但执行mvn idea:idea
解决了这个问题。
该命令重新生成关键的 IntelliJ IDEA 文件: ipr
、 iml
和iws
,从而将它们与您的pom.xml
重新对齐。
文档: https ://maven.apache.org/plugins/maven-idea-plugin
该插件已退役,但仍然(截至 2021 年 6 月 5 日)像魔术一样工作 :)
尝试删除所有 .iml 和您的 POM。 然后将您的 POM 再次复制并粘贴到您的项目中,然后重新打开并重新导入它。
我发现我的 .iml 文件和 pom 存在冲突并导致了问题。
添加更多提示,因为这是我遇到类似问题时搜索中出现的第一件事(项目构建在 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 在公司 Nexus 服务器的密钥库中安装了 IntelliJ 私有 JDK 没有的证书,因此当它尝试从 Nexus 获取文件时会引发异常。 为此,解决方案是退出 IntelliJ,设置一个名为 IDEA_JDK 的环境变量以指向我已经安装的具有正确证书的 JDK,然后重新启动 IntelliJ。 所有的构建问题都消失了。
IDE 在构建时使用它自己的 Maven 捆绑副本。 如果终端上的 maven 与 IDE 不同,那么您希望它们相同。
GOTO(在 Mac 上)- IntelliJ Idea -> 首选项 -> 构建、执行、部署 -> 构建工具 -> Maven。 设置Maven 主目录的路径 要从终端查找使用的 Maven 路径,请键入命令mvn -version
,这应该会打印出包括 dir 路径在内的大量详细信息。 把它放在Maven Home Directory中。
为了安全起见,您也可以对 JDK 位置执行相同操作
==== 可能导致此类问题的其他一些事情 ===
如果进行 mvn package 或 mvn clean install 构建,那么它必须对 IDE 缓存做一些事情。 除其他外,这通常有助于解决此类错误 -->
文件 -> 使缓存无效
我知道我在这次谈话中已经很晚了,但只是想发布这个以防其他人遇到这个问题。 发生这种情况的另一个原因是您没有引用正确的存储库。 Intellij 默认选择捆绑版本的 jar,而不是来自您自己的 maven 存储库的版本。 确认连接的存储库是正确的。
从命令提示符执行命令: mvn idea:idea
并右键单击项目-> 从菜单中重新导入依赖项
在我的情况下,我的 iml 不同步,所以我删除了特定模块的 iml,然后在 maven 选项下选择 unignore project 以重新创建 iml
这个简单的过程大约需要 1 分钟,没有任何风险。
“找不到符号”意味着 intellij 无法解决“依赖关系”。 因此,您可以通过单击“分析”->“分析依赖项”来强制“依赖项分析”,然后选择“分析范围”
如果您使用的是 gradle ,请尝试以下命令。这解决了我的问题
gradle cleanIdea idea
我有同样的问题。 去:
文件 -> 项目结构 -> 模块。 选择您的模块并在“依赖项”选项卡下,确保添加了所有 Maven 依赖项。
为了确保您在创意编辑器中收到类似问题的警告:从“依赖项”选项卡切换到“源”并添加将您的 src 标记为源。
我遇到了类似的问题,以下选项不起作用。
invalidating cache and restart
mvn idea:idea
什么解决了这个问题:
git clean -xdf
。 这将删除所有生成的类和idea/iml/ipr 文件。 其他 VCS 应该有类似的宏。mvn clean package
idea .
这里的关键是关闭 intellij,并从终端执行这些步骤。 如果从 IntelliJ 中尝试,IntelliJ 仍在某个地方缓存旧文件。 这是IntelliJ IDEA 2021.3.2 (Ultimate Edition) 版本。
我有同样的问题。 我在 Idea 设置中将 maven 版本从 3.0.5 更改为 3.0.4,现在一切正常。 不知道为什么这对我有帮助。
我尝试使缓存无效,将 Maven 更改为已安装的版本,但没有任何效果。
关闭并重新创建一个新项目解决了它。
我关闭了项目并通过单击根 pom(不仅仅是文件夹,而是 pom 文件本身)再次导入它。
我没有高兴地尝试了上面的一切。 但是我做了一件事最终让它工作:
我去了 C:\Users\.IntellijJIdea2018.2 并删除了整个文件夹。
它会删除 IntelliJ 的所有设置和缓存。 我不得不从头开始重新导入我的项目,但之前简单的删除和重新导入并没有奏效,但这最终让它再次工作。
删除 .idea 文件夹并关闭 IDE
再次打开 IDE 并导入将重新导入的项目,因为 .IDEA 文件夹已被我们之前删除
检查外部库模块,如果它没有填充所需的依赖项,则检查 IDE 中是否正确给出了 maven settings.xml 位置
还有一种没有提到的可能性。 如果您从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
获取更多详细信息。
如果配置了错误的模块,请执行以下步骤:
就我而言,问题出在不同的 Project Java SDK 版本中。 当我从终端构建项目时,maven 使用 Java 8,当我从 IDEA 构建时,它使用 Java 11。
转到 File > Project Structure... 并在 Project Settings 中将 Project SDK 设置为您需要的版本。
对我来说,问题是我在IntelliJ Java Compiler settings中选择了Ajc 编译器。 一旦我将它改回Javac ,一切正常。
对于 Mac 中的我,我通过从计算机中删除 Intellij Idea Appication 并删除 ~/Library/Application Support/JetBrains/IntelliJIdea2020.1 ~/Library/Caches/JetBrains/IntelliJIdea2020.1 中的缓存文件来解决它
然后重新安装,打开我的项目,构建成功!
我遇到了同样的问题。 我可以在终端中成功运行mvn clean package
命令,但无法从 IntellJ 运行或构建。 我做了以下动作,但都失败了。
mvn clean package
或mvn clean package
mvn clean package
mvn idea:idea
我做的最后一件事是:删除项目中的 .idea 和 .iml,删除所有依赖文件,然后从计算机中删除 IntellJ。 重新安装 IntellJ 后,我的项目构建成功。 我希望我能有更好的方法来解决这个问题。
此错误的另一个原因是在 pom.xml 文件中使用了依赖项,例如 lombok。 如果你在java文件中使用了@Data等lombok注解,那么你需要在intellij中安装lombok插件来摆脱IDE中的“错误”。
我也遇到了同样的问题。 从终端使用 maven 命令 (mvn clean install -DskipTests=true) 项目已成功构建。 但在 intellij 中,它无法识别 jar spring 库文件。
使用以下步骤修复它:
RCA:我怀疑这是由于 linux 中的权限问题而发生的
当您的系统 JVM/Maven 配置与 IntelliJ IDE 的 JVM/Maven 配置不匹配时,就会出现此类问题。 我面临着类似的问题。 我成功地能够朗姆酒"mvn clean install"
命令,但 IntelliJ Build 失败了。
我也尝试使用"mvn idea:idea"
命令,但它不起作用,因为"idea"
插件不再存在。 它已经退役了。
最后,我发现我的MAVEN_HOME
路径和 IntelliJ 默认的 maven 设置不匹配。 因此,在更正 IntelliJ 默认 maven 设置后,我的问题得到了解决。
您可以在以下位置找到设置。 在 IntelliJ ide 中转到文件 -> 设置 -> 构建、执行、部署。
确保“用户设置文件”和“本地存储库”的路径与环境变量“MAVEN_HOME”或“M2_HOME”的路径相同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.