130

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

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

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

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

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

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

请帮忙。

4

29 回答 29

230

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

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

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

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

于 2017-04-26T10:53:55.020 回答
36

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

于 2014-08-04T16:04:21.940 回答
21

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

于 2013-08-20T05:59:09.347 回答
20

添加更多提示,因为这是我遇到类似问题时搜索中出现的第一件事(项目构建在 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。所有的构建问题都消失了。

于 2015-11-14T13:45:05.090 回答
20

MavenReImport为我工作,如下所示...

在此处输入图像描述

于 2018-08-03T23:30:18.053 回答
11

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

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

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

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

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

文件 -> 使缓存无效

于 2017-05-02T18:21:45.380 回答
5

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

于 2016-08-08T13:23:49.957 回答
3

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

于 2018-08-14T20:39:24.383 回答
3

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

于 2019-05-09T00:19:29.167 回答
2

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

  • 关闭 IntelliJ
  • 删除IntelliJ 特定文件,如 .idea/*、*.iml、.settings 等。建议也删除 POM,但恕我直言,这不是必需的。
  • 然后使用以下方法在 IntelliJ 中重新创建项目:File > New > Project from existing Sources > 按照步骤操作。请注意不要导入多个配置文件或(相同的项目)。
于 2018-12-17T09:48:11.367 回答
1

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

于 2014-06-24T05:24:30.187 回答
1

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

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

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

在此处输入图像描述

于 2017-10-30T09:38:08.863 回答
1

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

gradle cleanIdea idea

于 2018-12-08T03:48:54.727 回答
1

我有同样的问题。去:

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

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

于 2019-06-09T01:15:53.070 回答
0

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

于 2015-04-15T09:46:37.677 回答
0

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

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

于 2018-09-26T16:26:20.613 回答
0

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

于 2018-11-02T09:48:23.570 回答
0

我没有高兴地尝试了上面的一切。但是我做了一件事最终让它工作:

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

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

于 2018-11-16T10:14:49.960 回答
0

删除 .idea 文件夹并关闭 IDE

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

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

于 2019-07-15T13:30:35.547 回答
0

还有一种没有提到的可能性。如果您从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>

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

您可以搜索Access restriction: The type XXX is not accessible due to restriction on required library更多详细信息。

于 2019-08-29T04:26:50.617 回答
0

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

  • 转到项目设置
  • 转到模块
  • 删除不应该存在的模块
于 2019-10-10T17:54:35.840 回答
0
  1. 从 maven 选项卡单击 + 并选择 pom.xml
  2. 从 Maven 选项卡单击下载源和文档
  3. 在项目结构(您可以在其中查看项目文件/目录)上,右键单击您要构建的项目并选择构建模块项目名称。
  4. 从选项卡运行 - 使用 + 添加应用程序编辑配置并填写以下字段: i. 主类 - 从项目选项卡中手动选择主类 ii。使用模块的类路径 - 选择应用程序名称 iii。缩短命令行 - 类路径文件
  5. 现在只需运行该应用程序。
于 2019-12-05T21:58:05.247 回答
0

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

转到 File > Project Structure... 并在 Project Settings 中将 Project SDK 设置为您需要的版本。

于 2020-01-15T11:34:31.630 回答
0

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

于 2020-02-03T09:48:30.637 回答
0

对于 Mac 中的我,我通过从计算机中删除 Intellij Idea Appication 并删除 ~/Library/Application Support/JetBrains/IntelliJIdea2020.1 ~/Library/Caches/JetBrains/IntelliJIdea2020.1 中的缓存文件解决了这个问题

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

于 2020-05-23T02:26:49.680 回答
0

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

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

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

于 2020-08-10T11:18:29.167 回答
0

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

于 2021-02-01T17:56:37.693 回答
0

我也遇到了同样的问题。从终端使用 maven 命令 (mvn clean install -DskipTests=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 中的权限问题而发生的

于 2021-05-13T14:12:52.370 回答
0

我遇到了类似的问题,我意识到我的 Maven 依赖项没有在 intellij 中更新。解决方案是在 maven 窗口中重新加载所有 Maven 项目,这会强制 intellij 重新加载 maven 依赖项。在此处输入图像描述

于 2022-03-04T11:06:51.313 回答